递归算法是编程语言中很难回避掉的一个算法,因为凡是能用循环实现的必定能用递归实现。先来个简单的递归:求斐波那契数列的第n个值(斐波那契数列:第一个和第二个都是1,第三个开始 a(n)=a(n-2)+a(n-1))废话不多说上代码:
#include<stdio.h>
int func(int n)
{
if(n==1||n==2)
return 1;
else
return func(n-1)+func(n-2);//实现递归;
}
int main()
{
printf("%d\n",func(6));
}
输出是:
8
请按任意键继续. . .
从代码中可知递归就是函数自己调用自己;
其中原理比较复杂所以我用了简单的例子方便讲原理
首先是func(6);
因为n=6;在else的分支条件里所以变成了func(6)=func(6-1)+func(6-2)
依次下去变成
func(6)=
func(5)+func(4)=
func(4)+func(3)+func(3)+func(2)= //因为func(2)和func(1)已知=1所以可以直接替代
func(3)+func(2)+func(2)+func(1)+func(2)+func(1)+1=
func(2)+func(1)+1+1+1+1+1+1=
8;
理解了原理就差不多可以理解递归的原理了,递归大部分都是这种思想。