以下のコードについて、基本ケース (n==0) の戻り値が 0 の場合、関数が常に「0」を返す理由を教えてください。この関数を修正するには、「return 0」を「return 1」に置き換えるだけでよいことはわかっていますが、以下の基本ケースで 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;
}