递归函数求n!,为什么停止工作,C语言

如题所述

你这个递归函数不对,造成栈资源耗尽,应该改为是:
N大于等于2时,
a=N*fun(N-1)
温馨提示:内容为网友见解,仅供参考
第1个回答  2018-12-04
else
a = n * f(n-1);
第2个回答  2018-12-04
if后面没{},else后面也没{},语法错误追答

例如:
int i=4;
if(i>5)
{
i=0;
}
else
{
i=1;
}

大括号有很多地方使用,比如:每个函数的开始,类的定义,结构的定义,枚举的定义,if,for,do,while,switch case等
它是程序块的分界符。
{与}是相对应的,必须同时存在

追问

我if后面只有一行代码,没有括号也应该可以正常执行啊

追答

计算机比较笨,它只会按行读。分号只能代表,这句程序结束。

假设用0和1来表示对与错,当if条件满足时,执行0,当if条件不满足时执行else。如果if与else中间没有一种符号划清楚那边是对,那边是错,那么计算机会按你的代码顺序,一直执行到最后一个;}代码处

假设这段代码只要满足某种条件就能执行,现在有很多条件1,条件2,条件3一直到条件N,从我们思维上判断,是不是要先判断条件成立,在去执行?而计算机它能是从上往下一个一个去试条件,看条件满不满足,如果条件后面的执行环节没有这种{}分块符号的话,计算机岂不是要一直往下走吗?

相似回答