我无法理解我的C程序中的逻辑
#include <stdio.h>
int factorial(int value){
if(value == 0){
value * factorial(value - 1);
}
}
int main()
{
int value = 0;
printf("The factorial of %d of %d",value, factorial(value));
}
我得到了一个输出
The factorial of 0 is -1
谁能解释为什么我得到 -1 ???
我试着看一些关于这个的视频,但我没有得到答案
如果可能,请解释一下其中的逻辑?
谢谢
回答
有几个问题factorial:它从不返回任何内容,并且在0传递给它时递归(这应该是基本情况并且应该返回1)。尝试这个:
int factorial(int value) {
if (value == 0) {
return 1;
}
return value * factorial(value - 1);
}