一,递归
程序调用自身的编程技巧称为递归( recursion)。递归做为一种算法在程序设计语言中广泛应用。 一个过程或函数在其定义或说明中有直接或间接调用自身的一种方法,它通常把一个大型复杂的问题层层转化为一个与原问题相似的规模较小的问题来求解,递归策略只需少量的程序就可描述出解题过程所需要的多次重复计算,大大地减少了程序的代码量。递归的能力在于用有限的语句来定义对象的无限集合。一般来说,递归需要有边界条件、递归前进段和递归返回段。当边界条件不满足时,递归前进;当边界条件满足时,递归返回。
举个例子大家就明白递归的概念了,从前有座山,山里有个庙,庙里有个老和尚,给小和尚讲故事。故事讲的是:从前有座山,山里 有个庙,庙里有个老和尚,给小和尚讲故事。故事讲的是:从前有座山,山里有个庙。。。。。。
递归就类似于这种意思。那么什么是斐波那契数列呢,斐波那契数列最开始是以兔子繁殖为例的一般而言,兔子在出生两个月后,就有繁殖能力,一对兔子每个月能生出一对小兔子来.如果所有兔子都不死,那么一年以后可以繁殖多少对兔子?我们不妨拿新出生的一对小兔子分析一下:第一个月小兔子没有繁殖能力,所以还是一对两个月后,生下一对小兔民数共有两对三个月以后,老兔子又生下一对,因为小兔子还没有繁殖能力,所以一共是三对幼仔对数=前月成兔对数成兔对数=前月成兔对数+前月幼仔对数总体对数=本月成兔对数+本月幼仔对数可以看出幼仔对数、成兔对数、总体对数都构成了一个数列.这个数列有关十分明显的特点,那是:前面相邻两项之和,构成了后一项。
二,斐波那契数列
斐波那契数列(Fibonacci sequence),又称黄金分割数列、因数学家列昂纳多·斐波那契(Leonardoda Fibonacci)以兔子繁殖为例子而引入,故又称为“兔子数列”,指的是这样一个数列:1、1、2、3、5、8、13、21、34、……在数学上,斐波纳契数列以如下被以递归的方法定义:F(0)=1,F(1)=1, F(n)=F(n-1)+F(n-2)(n>=2,n∈N*)在现代物理、准晶体结构、化学等领域,斐波纳契数列都有直接的应用,为此,美国数学会从1963起出版了以《斐波纳契数列季刊》为名的一份数学杂志,用于专门刊载这方面的研究成果。
斐波那契数列指的是这样一个数列 1, 1, 2, 3, 5, 8, 13, 21, 34, 55, 89, 144, 233,377,610,987,1597,2584,4181,6765,10946,17711,28657,46368........
#include <stdio.h>
int main()
{
int i;
int a[40];
a[0] = 0;
a[1] = 1;
printf("%d %d", a[0],a[1]);
for(i=2; i<40; i++);
{
a[i] = a[i-1] + a[i-2];
printf("%d", a[i]);
}
return 0;
}