递归:函数重复调用自身代码段,其中不同的是参数。(参数+结束条件)
特点:从哪开始调用最终就回到哪去
斐波那契序列:
f(1) = 1,f(2) = 1
f(n) = f(n-1)+f(n-2)
递归方式:
#include<stdio.h>
#include<stdlib.h>
int Fib(int n)
{
if(n<0)
{
exit(1);
}
else
{
if(n == 0)return 0;
if(n ==1 || n == 2)return 1;
return Fib(n-1)+Fib(n-2);
}
}
int main()
{
int n;
n = Fib(10);
printf("%d\n",n);l
return 0;
}
为提高效率,可用循环解决:
int i;
int fn;
int fn_1 = 1;
int fn_2 = 1;
for(i = 3;i<=n;i++)
{
fn = fn_1+fn_2;
fn_2 = fn_1;
fn_1 = fn;
}