为什么输入之后不会得出答案 求助各位大佬 帮我看看哪里错了
第1个回答 2021-10-31
两个比较常见的错误
a)递归没有结束条件,要判断 num==0情况直接返回1,否则就是死循环
b) 返回类型是long int但是中间类型都是int,这是非常大的错误。int类型只能保存大概12!这样的数,此时返回long int毫无意义。所有的类型都应该换为long,否则能算的阶乘太小了本回答被提问者采纳
a)递归没有结束条件,要判断 num==0情况直接返回1,否则就是死循环
b) 返回类型是long int但是中间类型都是int,这是非常大的错误。int类型只能保存大概12!这样的数,此时返回long int毫无意义。所有的类型都应该换为long,否则能算的阶乘太小了本回答被提问者采纳
第2个回答 2021-10-31
求阶乘递归函数调用时,num必须是大于0的,否则该递归函数无法结束,成为死循环,则没有输出值
第3个回答 2021-10-31
递归需要有结束条件。
需要在fact()里面加上判断
if (1==num) return 1;
需要在fact()里面加上判断
if (1==num) return 1;
第4个回答 2021-10-31
求n的阶乘时终止条件的判断if(n==1)时返回1的话,求0!就变成没有定义了.