c語言遞歸調用
發布時間: 2025-02-27 07:32:50
Ⅰ c語言函數的遞歸調用
遞歸必須滿足兩個條件:1.初始條件;2.遞歸函數.舉個例子,求階乘:有f(1)=1;f(n)=n*f(n-1)(n≥2)現在你可以實現如下:long func(int n)//定義函數
{
long f,s=0;
if(n==1)f=1;
else
{
f=func(n-1)*n; //這里就是一個遞歸的過程,自身調用自身
s=s+f;
}
return s;
} 假設你現在是求3!執行過程就是:f(3)=f(2)*3;然後調用自身:f(2)=f(1)*2;在調用遇到初始條件:f(1)=1;則f(3)=1*2*3=6
Ⅱ 為什麼「C語言既可以嵌套定義又可以遞歸調用」是錯的
C語言可以遞歸調用,但是(函數)不能嵌套定義。
例如:
intfact(intn)
{
if(n==0)
return0;
else
returnn*fact(n-1);
}
圖中的遞歸調用是允許的。
而:
voidfoo()
{
voidbar()
{
//Somecode
}
}
這樣在函數內定義函數是不允許的。
不過結構體是可以嵌套定義的,例如:
structtest{
inta;
structdemo{
charb;
};
};
這樣在結構體內定義結構體,是可以的。
熱點內容