49 _ 可以不看
50 _ 递归1 _ 递归的定义和不同函数之间相互调程序举例
定义:
一个函数自己直接或间接调用自己
举例:
1,1+2+3+4+..+100的和
2,求阶乘
3,汉诺塔
4,走迷宫
#include<stdio.h>
void f();
void g();
void k();
int main(void)
{
f();
return0;
}
void f()
{
printf("FFFF\n");
g();
printf("1111\n");
}
void g()
{
printf("GGGG\n");
k();
printf("2222\n");
}
void k()
{
printf("KKKK\n");
printf("3333\n");
}
51 _ 递归2 _ 一个函数自己调自己程序举例
#include<stdio.h>
void f(int n)
{
if(n==1)
printf("自己调自己\n");
else
f(n-1);
}
int main(void)
{
f(7);
return0;
}
52 _ 递归3 _ 1+2+3+....+100之和用递归来实现
CASE 1
#include<stdio.h>
int main(void)
{
intval;
inti,mult=1,s;
printf("请输入一个数字:");
printf("val=");
scanf("%d",&val);
for(i=1;i<=val;++i)
mult=mult*i;
printf("%d的阶乘是:%d\n",val,mult);
return0;
}
CASE 2
#include<stdio.h>
//假定n的值是大于或等于1的值
long f(long n)
{
if(1==n)
return1;
else
returnf(n-1)*n;
}
int main(void)
{
printf("5的阶乘是:\n%d\n",f(5));
return0;
}
CASE 3
#include<stdio.h>
//假定n的值是大于或等于1的值
long sum(long n)
{
if(1==n)
return1;
else
returnsum(n-1)+n;
}
int main(void)
{
printf("1+2+3+...+100的和是:\n%d\n",sum(100));
return0;
}