您的位置:首页 > 其它

递归与斐波那契数列

2016-07-02 14:21 239 查看
public class TestFib

{

    public static void main(String[] args)

    {

        /*

        需求:用递归方法计算斐波那契数列第五个数的值

        斐波那契数列的规律:

        f = 1(n=1,2)

        f = f(n-1)+f(n-2)

        */

        //System.out.println("第五个数为:"+f(5));

        /*

        需求:用递归求5的阶乘,并打印输出

        */

        //System.out.println("5的阶乘是:"+jiecheng(5));

        /*

        需求:用非递归方法求第5个斐波那契数

        方法:循环及数组

        也可以不用数组,分析过后它的规律后,三个变量足矣

        */

        System.out.println("斐波那契数列第40个数为:"+f1(40));

    }

    public static int f(int n)

    {

        if(n==1 || n==2)

            return 1;

        else

            return f(n-1)+f(n-2);

    }

    public static long jiecheng(int i)

    {

        if(i == 1 || i == 0)

            return 1;

        else

            return i*jiecheng(i-1);

    }

    public static long f1(int n)

    {

        long f1 = 1;

        long f2 = 1;

        long f = 0;

        if(n==1 || n==2)

            return 1;

        //增减程序的健壮性

        if(n < 1)

        {

            System.out.println("invaid parameter!");

            return -1;

        }            

        //for(int i=0;i<n;i++)//i<n-2;因为前两个数不用循环的,他们的值已是确定值

        for(int i=0;i<n-2;i++)

        {

            f = f1 + f2;

            f1 = f2;

            f2 = f;

        }

        return f;

    }

}

/*

总结:

1. 0!=1

2.递归与迭代

3.用非递归方法求第5个斐波那契数列

4.斐波那契数列--Fibonacci sequence

5.程序不仅要实现功能,还要保证程序的健壮性(防止非法输入)

6.函数结束的方式

1)return

无参函数一般返回-1值

2)系统自带的exit方法

7.写程序其实就是如下:

把思路转换成代码

思路也就是编程思想

*/
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: