Buna benzer bir soru birkaç yıl önce soruldu , ancak bu daha zorlu.
Zor olan basittir. Defalarca gibi herhangi tekrarlama yapıları kullanmadan kod çalıştırır (seçtiğiniz dilde) bir program yazın while
, for
, do while
, foreach
veya goto
( tüm nitpickers için Yani, bir döngü kullanamazsınız ). Ancak, tekrar eden fonksiyona, kendi kendine çağrı işlevinde izin verilmez (aşağıdaki tanıma bakınız) . Bu, bu zorluğu çok kolaylaştıracaktır.
Döngüde nelerin yapılması gerektiğine dair bir kısıtlama yoktur, ancak cevabınızla ilgili bir açıklama yapın, böylece başkalarının tam olarak neyin uygulandığını anlayabilmesini sağlayabilirsiniz.
Tanımlara asılabilir olanlar için, bu soru için bir döngü tanımı şöyledir:
A programming language statement which allows code to be repeatedly executed.
Ve bu soru için özyinelemenin tanımı, standart özyinelemeli işlev tanımınız olacaktır:
A function that calls itself.
Kazanan, 16 Temmuz günü saat 10.00’da Doğu’da en fazla oyu alan cevap olacak. İyi şanslar!
GÜNCELLEME:
Hala ifade edilmekte olan karışıklığı sakinleştirmek yardımcı olabilir:
Yukarıda belirtilen kurallar:
- Döngü veya goto kullanmayın
- İşlevler kendilerini arayamaz
- 'Döngüde' ne istersen yap
Bir şeyi uygulamak istiyorsan ve kurallar açıkça yasaklamıyorsa, devam et ve yap. Pek çok cevap, kuralları çoktan eğmiştir.
rep(f){f();f();}
- bu bir koddur (işlev bildirimi bazı dillerde bir ifadedir), art arda kod çalıştırmaya izin verir. İzin verilmedi mi? Bir döngü uygulamak için kod istersiniz. Bu kod sözdizimsel olarak bir deyimse, buna izin vermediniz. Başka bir örnek: f(b) { b(); g(b); }; g(b) { f(b); }
. f
Özyinelemeli bir işlev olduğunu söyleyebilirim (karşılıklı olarak özyinelemeli olarak g
). İzin verilmedi mi?
function A
çağrılar yapınfunction B
vefunction B
çağrılar yapınfunction A
. İşlev kendisini çağırmadığından, ^. ^