yani direk c standardina gore soruyorsa bence nuevo'nun cevabi yanlis. Cevap "yalniz 2" olmali.
1 icin n unsigned int olarak verilmis. unsigned int overflow edince 0'dan tekrar baslar, for loop da n > 0 gecerli olmaz ve program sonlanir.
2 icin while'da 0 olmayan her sey true sayilir. n = -n olunca n -1 ve 1 arasinda doner durur ve while bunu hep true olarak gorur, sonsuza kadar calisir.
3 icin, teoride sonsuza kadar calisabilir tail call optimization falan durumlarinda ama c icin konusursak recursion stack uzerinde olacagi icin bir sure sonra stack overflow verip program sonlanacaktir. ama bazi compilerlar TCO yapabilir o durumda stack overflow olmayabilir, standart implementasyona birakmistir diye biliyorum. o yuzden sonsuza kadar kesin calisir diyemeyiz ama algoritmayi sonsuz tape'i olan bir turing machine'de calistiracak olsaydik sonsuza kadar calisirdi evet. cevaplarda 2 ve 3 olmadigi icin bunu c standardina gore yorumlamamiz isteniyor denilebilir o zaman da cevap "Yalniz 2" olur.
Benim C biraz pasli ama eyorlamam bu kadar.
edit: Sir Anthony Hopkins, 1 ve 2 de stack overflow olmasi icin bir sebep yok cunku recursion yok. 1'de daha once yazdigim gibi numerical overflow olur, n 0 olur bir yerde o kadar. 2 sonsuza kadar calisir gibime geliyor cunku while 0 olmadigi surece true sayilir diye biliyorum.
0