1、函式的巢狀呼叫
巢狀定義是在定義乙個函式時,其函式體內又包含另乙個函式的完整定義。
然而,c語言不能巢狀定義函式,但可以巢狀呼叫函式,也就是說,在呼叫乙個函式的過程中,又呼叫另乙個函式。
例:main()
a();
a()b();
b()return;
例題:計算s=2²!+3²!
思路:(1)可編寫兩個函式,乙個是用來計算平方值的函式square,另乙個是用來計算階乘值的函式factorial。
(2)主函式先調square計算出平方值,再在square中以平方值為實參,呼叫factorial函式計算其階乘值,再返回主函式,在迴圈程式中計算累加和。
#include #includelong square(int
p);long factorial(int
q);void
main()
printf(
"%ld\n
",s);
}long square(int
p)long factorial(int
q)
return
c;}
2、遞迴
在呼叫乙個函式的過程中又出現直接或間接地呼叫該函式本身,稱為函式的遞迴呼叫。c語言的特點之一就在於允許函式的遞迴呼叫。
例:int flint (x)
int y,z;
z=flint(y);
return (2*z);
注:遞迴函式必須要有乙個退出條件!
例:用遞迴的方法求n!
思路:求n!也可用遞迴的方法,即5!=4!*5,4!=3!*4……可用如下遞迴公式表示:
n=1 (n=0,1)
n*(n-1)! (n>1)
#include #includelong recusion(int
n);void
main()
long recusion(int
n)
else
if(n==0||n==1
)
else
return
tomp_result;
}
注:遞迴演算法是效率低下的演算法,但有些問題卻只能用遞迴演算法才能實現。如:hanoi塔問題。
初學者 遞迴
program xuexi3 implicit none integer,external fact 呼叫函式需要寫external 待定 integer n write n read n write fact n stop endrecursive integer function fact n ...
函式(初學者)
乙個較大的程式可分為若干個程式模組,每乙個模組用來實現乙個特定的功能。在高階語言中用子程式實現模組的功能,子程式由函式來完成。乙個c程式可由乙個主函式和若干個其他函式構成。函式間的呼叫關係 由主函式呼叫其他函式,其他函式也可以相互呼叫。同乙個函式可以被乙個或多個函式呼叫任意多次。例 include ...
初學者如何理解遞迴
0 遞迴的定義 如果你沒明白遞迴的定義,參見本文 0.遞迴的定義 1 從斐波那契數列開始 斐波那契的遞推公式 斐波那契數列遞迴演算法和遞推公式類似 int fibo int x 就這麼簡單?沒錯,通過這個例子可以看出,遞迴函式只需要寫兩部分,乙個是遞迴終止條件 if x 3 return 1 乙個是...