c语言函数的递归调用?

2025-03-10 13:29:28
推荐回答(5个)
回答1:

递归有一个堆栈的概念,那就意味着他是一个反理解的过程:就象数学递推一样,你知道第一项,第二项,又知道通项公式,那你就可以知道任何一项。
然后你看代码:fun(0)==0,fun(1)==1;是告诉你一二项。
fun(n)==fun(n-1)+fun(n-2);是告诉你通项公式。那么,你就可以知道任何一项。你这样理解就差不多了,具体机器是怎么操作的,那很复杂的,也不需要明白!!!!

回答2:

是的,局部变量会新定义一次,不过仅局限于局部变量(全局变量和静态变量都是全局的,要是还没学暂时不用管)。
并不能说是“同时”,应该说是“同样”,时间上肯定是按照调用的先后顺序的。
递归确实会让程序变慢,但只是相对于不需要递归的等价代码。而且原因也不是内存分配导致的,而是因为函数调用产生的。

回答3:

递归:就是函数自己调用自己,然后在函数体内设一个终止递归的条件。
比如:
void
func(int
num)
{
if
(num
<=
0
)//这里是终止条件,要不就一直递归下去,程序就OVER了。
return;
printf("%d",
num);
func(--num);//这里自己调用自己。
}
void
main(void)
{
func(10);//猜猜结果是什么。
}

回答4:

你这个不是递归调用吧。两个函数的名字都不一样,这个方法的原理是x*y=gbs(x,y)*gys(x,y)。就是两个数的乘积等于它们的最大公约数和最小公倍数的乘积。

回答5:

第四句应该是
if(n==0||n==1)
吧!
还有printt里fac(a)后面括号里多了一个分号!