一、函数的嵌套
大体思路:一步步进入调用,一步步返回。
编程案例:输入四个数a b c d,用函数方式找出最大值。 1、代码编写:
#include <stdio.h>
int getMax1(int a,int b)
{
int Max1;
Max1=a>b?a:b;
return Max1;
}
int getMax(int a,int b,int c,int d)
{
int Max;
Max=getMax1(a,b);
Max=getMax1(Max,c);
Max=getMax1(Max,d);
return Max;
}
int main()
{
int data1;
int data2;
int data3;
int data4;
int bigOne;
puts("请输入四个数:");
scanf("%d%d%d%d",&data1,&data2,&data3,&data4);
bigOne=getMax(data1,data2,data3,data4);
printf("最大的数是:%d",bigOne);
return 0;
}
2、编译结果: 二、函数的递归(自己嵌套自己) 应用开发里,很少用,容易出现错误。 程序分析: 代码:
#include <stdio.h>
int getAge(int currentNum)
{
int age1;
if(currentNum==1){
age1=10;
}else{
age1=getAge(currentNum-1)+2;
}
return age1;
}
int main()
{
int num,age;
printf("你要看哪一个学生的年龄:");
scanf("%d",&num);
age=getAge(num);
printf("该学生的年龄为:%d",age);
return 0;
}
自己与自己嵌套的体现: 如果currentNum=4,走else,得到age1=getAge(3)+2,此时再算getAge(3),走else,得到age1=getAge(2)+2,此时再算getAge(2),走else,得到age1=getAge(1)+2,到if(currentNum==1)结束。所以if…else的存在就是停止嵌套的。
编译结果: 三、求阶乘 思路: 代码:
#include <stdio.h>
#include <stdlib.h>
long int fac(int num)
{
long int f;
int num1;
num1=num-1;
if(num>=17){
printf("越界了\n");
exit(-1);
}
if(num==1){
f=1;
}
else{
f=fac(num1)*num;
}
return f;
}
long int main()
{
int num;
long int f;
printf("你要算几的阶乘:");
scanf("%d",&num);
f=fac(num);
printf("这个数的阶乘为:%d",f);
return 0;
}
注: int 型是4个字节,4*8=32位,32位的话,就是2^32个长度,经过调试和运行,如果不用long int,当num=17的时候,就越界了。
编译结果:
|