阶乘递归解的基本情况



我看过很多递归解决方案,我不明白为什么有时基本情况是"if(num === 0) 返回 1;",而有时是"if(num === 1) 返回 1;"是哪一个?

你应该使用类似的东西

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 阶乘是 1,它也会给出 0

最新更新