Bir fizik geçmişinden geliyorum ve bu yüzden çok fazla matematik. Tümevarımlı kanıtlar ile benzerlikler bularak özyinelemeli / dinamik programlama çözümlerine çok uygun sorunları kolayca bulabilirim .
İndüksiyonla kanıtı olarak iki bölümünüz var:
- eğer bir şey yineleme N için doğruysa, yineleme N + 1 için de doğrudur
- Eğer iterasyon için doğru olduğunu kanıtlamak 1
Özyinelemeli programlama / dinamik programlamada:
- bir çıkış koşulu tanımlarsınız (örneğin, yineleme 1 için çözümü zor bir şekilde bağlarsınız)
- yineleme N-1 çözeltisi verildiğinde yineleme N için çözüm hesaplarsınız
Yani, diğerlerinin cevapladığı gibi, bu bir deneyim ve ipuçlarını seçme meselesidir, ancak size rehberlik etmek için diğer becerileri tekrar kullanabilirsiniz. Bundan sonra, her zaman bahsettiğim iki bölüme sahip olmanız gerekir: eğer yapmazsanız, işe yaramaz.
Örneğin, bir kümenin tüm permütasyonlarını oluşturmak için:
- çıkış koşulu: yalnızca bir öğeniz varsa, döndürün
- özyineleme: bir N öğesinin permütasyonları, her bir öğeyi seçerek ve öğeyi kaldırarak aldığınız alt kümenin tüm N-1 (çok) permütasyonları ile birleştirerek elde ettiğiniz N permütasyon kümesidir.