函数的嵌套
调用过程
Eg: main{
A();
}
a()
{
B();
}
B()
{
xxx
teturn;
}
例题
计算s=2^2! + 3^2! (“!”在高等数学里是 阶乘的意思)
#include "stdio.h"
int factorial (int x,int y);
int square (int x,int y);
int main()
{
int s;
s = square (2,3);
printf("%d",s);
}
int square (int x,int y)
{
int a;
a = factorial(x*x,y*y);
return(a);
}
int factorial (int x,int y)
{
int i,j,b=1,c=1,d;
for(i=x;i>0;i--)
{
b *= i;
}
for(j=y;j>0;j--)
{
c *= j;
}
d = c+b;
return(d);
}
函数的递归
定义
在调用一个函数的过程中又出现直接或间接地调用该函数本身,称为函数的递归调用。C语言的特点之一就在于允许函数的递归调用。
eg:求n的阶乘;
#include "stdio.h"
int main()
{
int recursion (int x);
int r,n;
scanf("%d",&n);
r = recursion(n);
printf("%d",r);
}
int recursion (int x)
{
int temp_r;
if(x==1)
{
temp_r=1;
}
else
temp_r = x*recursion(x-1);
return(temp_r);
}
汉诺塔问题