目录
递归是什么?
可以看作一个循环,函数里面调用自己,
理解:函数运行判断后,再次调用该函数,但是上次的运行还未结束,任然需要执行,所以暂挂等最新的函数结束后,在执行后面程序。
运用大事化小的思想解决问题。
具体概念:
一个函数在函数体内又调用了本身,我们称为递归调用,这样的函数就是递归函数。
递归函数成功执行需满足以下两个条件:
1必须有一个明显的结束条件。
2必须有一个趋近于结束条件的趋势。
原理图解
cs
#include <stdio.h>
void test (int n)
{
printf("%d \n", n);
if (n > 1)
{
test(n - 1);
}
printf("%d \n", n);
}
int main()
{
test(3);
return 0;
}
输出结果
321123
案例一斐波那契数
1,1,2,3,5,8,13... 这是一个斐波那契数列,它的规则是第1个和第2个斐波那契数是1,从第3个数开始,每个斐波那契数都是前两个数之和。编写程序,输入一个整数,计算它的斐波那契数?
cs
#include <stdio.h>
int fib(int a)
{
if(a == 1 || a == 2)
{
return 1;
}
return fib(a-1)+fib(a-2);
}
int main()
{
int n;
printf("请输入一个数:\n");
scanf("%d",&n);
printf("%d的斐波那契数列的结果是%d\n",n,fib(n));
return 0;
}
案例二1~9的阶乘
cs
#include <stdio.h>
int fib(int a)
{
if(a == 1){
return 1;
}
return a * fib(a-1);
}
int main()
{
int n;
scanf("%d",&n);
printf("%d的阶乘是%d\n",n,fib(n));
return 0;
}