Базовый случай для факториального рекурсивного решения - PullRequest
0 голосов
/ 25 января 2019

Я смотрел на многие рекурсивные решения и не понимаю, почему иногда базовый случай - это "if (num === 0) return 1;"и в других случаях это «if (num === 1) return 1;»Который из них?

1 Ответ

0 голосов
/ 25 января 2019

Вы должны использовать что-то вроде

int factstart(int num){
if(num<0) return -1;
else return num * fact(num-1);
}
int fact(int num){
if(num == 0) return 1;
else return num*fact(num-1);
}

причина, по которой люди используют 1 или 0, заключается в том, что большую часть времени они получают ответ, но это не защитное программирование., и если для любого из них задано отрицательное число, то ответом будет какое-то случайное значение, а если 0 дается для случая, когда они равны 1, то это даст 0, даже если 0 факториал равен 1

...