Bazen görüşmelerde, bir sorunu çözmek için özyineleme kullanabilirim ( 1
sonsuz bir kesinlik tamsayı eklemek gibi ) veya sorun kendini özyinelemeyi kullanmaya uygun gösterdiğinde. Bazen, problemi çözmek için özyinelemenin çok fazla kullanılmasından kaynaklanabilir, bu yüzden fazla düşünmeden, sorunu çözmek için özyineleme kullanılır.
Ancak, bir sorunu çözmek için özyineleme kullanmanın uygun olduğuna karar vermeden önce dikkat etmeniz gereken noktalar nelerdir?
Bazı düşüncelerim vardı:
Her seferinde yarıya indirilen verilerde özyineleme kullanırsak, 16GB RAM'e veya hatta 8 TB'lık bir sabit diske sığabilecek tüm veriler sadece 42 seviye derinlikte özümleme ile işlenebildiğinden özyineleme kullanmanın bir sorun olmadığı görülüyor. (yani yığın taşması yok (bence bazı ortamda, yığın 4000 seviye derinliğinde, 42'den fazla olabilir, ancak aynı zamanda, her çağrı yığını olarak daha fazla bellek kapladığı kaç yerel değişkene bağlıdır. çok sayıda yerel değişken varsa ve yığın taşmasını belirleyen düzey değil, bellek boyutudur)).
Saf özyineleme kullanarak Fibonacci sayılarını hesaplarsanız, ara sonuçları önbelleğe almadığınız sürece gerçekten zaman karmaşıklığı konusunda endişelenmeniz gerekir.
Ve 1
sonsuz bir hassas tamsayıya eklemeye ne dersiniz ? Belki de 3000 basamak uzunluğunda veya 4000 basamak uzunluğundaki rakamlarla çalışacaksınız, o kadar büyük ki, yığın taşmasına neden olabilir mi? Bunu düşünmedim, ama belki cevap hayır, özyineleme kullanmamalıyız, ama sadece düz bir döngü kullanmalıyız, çünkü bazı uygulamalarda, sayı gerçekten 4000 basamak uzunluğundaysa, bazılarını kontrol etmek için sayının asal olup olmadığı gibi sayının özellikleri.
Nihai soru şudur: Bir sorunu çözmek için özyineleme kullanmaya karar vermeden önce dikkat etmeniz gereken noktalar nelerdir?
1
sonsuz hassas tamsayıya ekleme ? Evet, daha küçük bir probleme indirgenebilirler, ancak saf özyineleme bunun için uygun değildir