对于下面的代码,谁能告诉我,如果基本情况(n==0)的返回值为 0,为什么函数总是返回“0”?我知道为了更正这个函数,我只需要用“return 1”替换“return 0”,但是,我试图理解为什么它在下面的基本情况下返回 0。
谢谢你的帮助
int factorial(int n) {
if (n == 0) {
return 0;
} else {
return n * factorial(n-1);
}
}
编辑:希望下面的代码没有逻辑错误......
#include<iostream>
#include<math.h>
using namespace std;
long double factorial (long double n) {
if (n==0) return 1;
if (n<0) return -fabs((n*factorial(n+1)));
return n*(factorial(n-1));
}
int main () {
long double n;
cout << "Enter a number: ";
cin >> n;
cout << "Factorial of " << n << " is " << factorial(n) <<endl;
return 0;
}