почему такую рекурсию функций не делают, она понятнее?
public int c(int s) {
int n=0;
if (n == s) return 1;
s = c(n + 1) * s;
return n;
}
public int c(int s) {
int n=0;
if (n == s) return 1;
s = c(n + 1) * s;
return n;
}
Для чего? !
Почему не делают? !
Откуда такие предположения?
Много ли ты строк кода прочитал/написал?
Лично я рекурсии стараюсь обходить сторонной, ибо ошибится очень легко, а потом ищи. .
Да и потом, смысл в ней? ! для чего s?! оно не передаётся.
###Конкретно в этой рекурсии, смысл не большой, s не будет равна n, только может быть в первом случае, а если в первый раз s != 0, тогда подвиснет твоя рекурсия
пример:
функция вызывается с s==0
сравнение n == s? вышел.. .
если функция вызывается с s!=0
сравнение n == s? нет
вызываем снова функцию, где наша s = n+1 // n = 0, т. е. теперь наша S == 1
и опять тоже самое, пока не подвиснет
Не бойся рекурсии, если из неё гарантирован выход при каких-то условиях.
Если проверку на выход не сделать или проверка всегда окажется ложной, то у тебя будет переполнение стека.
в данном случае одно понятно -- вы либо прикидываетесь, либо в упор не понимаете что эта рекурсия "бесконечна"
Прикольная функция. При s<0 будет всегда выдавать 0, при s=0 - выдает 1. А при s>0 зацикливается! Ппц какая понятная рекурсия.