递归与斐波那契数列

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.写程序其实就是如下:
把思路转换成代码
思路也就是编程思想
*/
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值