函數(shù)的嵌套調(diào)用
定義:C語(yǔ)言中是不允許嵌套函數(shù)定義的,因此函數(shù)之間是相互平行的。不存在上一級(jí)函數(shù)和下一級(jí)函數(shù)。只不過(guò)在C語(yǔ)言中允許在一個(gè)函數(shù)中調(diào)用另一個(gè)函數(shù)。這就是函數(shù)的嵌套調(diào)用。
練習(xí):計(jì)算3!+2!得值
#include<stdio.h>
int Value1()
{
int a=3,i,product=1;
for(i=3;i>0;i--)
{
product*=i;
}
return product;
}
int Value2()
{
int a=2;i,product=1;
for(i=2;i>0;i--)
{
product*=i;
}
return product;
}
int main()
{
int value;
value=value1()+value2();
printf("%d\n",value);
return 0;
}
遞歸函數(shù)的調(diào)用
定義:遞歸函數(shù)就是自己調(diào)用自己。
注意:為了防止遞歸函數(shù)無(wú)終止的進(jìn)行,必須在函數(shù)內(nèi)有終止遞歸函數(shù)的條件。通常情況下會(huì)選擇條件判斷,當(dāng)條件不滿(mǎn)足時(shí),跳出遞歸。
練習(xí):求n!
#include<stdio.h>
int product(int a)
{
int product=1;
if(a<0)
{
printf("error\n");
}
else if(a==0||a==1)
{
product=1;
}
else
{
product=a*product(a-1);
}
return product;
}
int main()
{
int a,product;
printf("input a number:");
scanf("%d",&a);
product=product(a);
}