递归,斐波那契数列

来源:互联网 发布:萧山哪里有学编程 编辑:程序博客网 时间:2024/05/20 18:00

一 递归(来自百度百科)

         程序调用自身的编程技巧称为递归( recursion)。递归做为一种算法程序设计语言中广泛应用。 一个过程或函数在其定义或说明中有直接或间接调用自身的一种方法,它通常把一个大型复杂的问题层层转化为一个与原问题相似的规模较小的问题来求解,递归策略只需少量的程序就可描述出解题过程所需要的多次重复计算,大大地减少了程序的代码量。递归的能力在于用有限的语句来定义对象的无限集合。一般来说,递归需要有边界条件、递归前进段和递归返回段。当边界条件不满足时,递归前进;当边界条件满足时,递归返回。

注意:递归不可以无限的调用下去 ,一定要有出口,即递归结束的条件


二 递归的应用(斐波那契数列的输出)

斐波那契数列(Fibonacci sequence),又称黄金分割数列、因数学家列昂纳多·斐波那契(Leonardoda Fibonacci)以兔子繁殖为例子而引入,故又称为“兔子数列”,指的是这样一个数列:1、1、2、3、5、8、13、21、34、……在数学上,斐波纳契数列以如下被以递归的方法定义:F(0)=0,F(1)=1, F(n)=F(n-1)+F(n-2)(n>=2,n∈N*)在现代物理、准晶体结构、化学等领域,斐波纳契数列都有直接的应用,为此,美国数学会从1963起出版了以《斐波纳契数列季刊》为名的一份数学杂志,用于专门刊载这方面的研究成果

斐波那契数列输出前n项(java)

import java.util.*;public class Main{public static void main(String[] args) {Scanner sc = new Scanner(System.in);int n = sc.nextInt();for(int i =1;i<=n;i++){System.out.print(fibonacci(i)+" ");}}public static int fibonacci(int n){if (n==1||n==2){return 1;}else {return fibonacci(n-1)+fibonacci(n-2);}}}


程序运行结果如下

输入要显示的项数



具体的求某一项的思路,拿第五项为例


(制作:百度脑图)

要想求第五项f(5);就会调用fibonacci函数(下面简称f),求f(4)+f(3),同理,要想求f(4)+f(3)同样需要递归再次调用自己求f(n-1)+f(n-2),直到调用到程序的出口(即f(1),f(2))时,停止递归,从而一层层向上返回。