目录
递归是什么?
具体概念:
原理图解
案例一斐波那契数
案例二1~9的阶乘
递归是什么?
可以看作一个循环,函数里面调用自己,
理解:函数运行判断后,再次调用该函数,但是上次的运行还未结束,任然需要执行,所以暂挂等最新的函数结束后,在执行后面程序。
运用大事化小的思想解决问题。
具体概念:
一个函数在函数体内又调用了本身,我们称为递归调用,这样的函数就是递归函数。
递归函数成功执行需满足以下两个条件:
1必须有一个明显的结束条件。
2必须有一个趋近于结束条件的趋势。
原理图解
#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个数开始,每个斐波那契数都是前两个数之和。编写程序,输入一个整数,计算它的斐波那契数?
#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的阶乘
#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;
}