爱程序网

【作业】斐波那契数列的实现

来源: 阅读:

斐波那契数列的实现

package DiGuistyle;

import java.util.Scanner;

public class DiGuiZuoYe {

/*
 * 用递归实现斐波那契数列    1、1、2、3、5、8、13、21、....
 * 
 * F(1)=1;F(2)=1;
 * F(N)=F(N-1)+F(N-2);
 * 第一步,基于递归公式,把乘号改成加号,完成斐波那契递归公式
 * 第二部,赋值的N要>=3,嵌入判断
 * 第三部,N要从屏幕输入,复习并运用scanner语句。
 */
    
    // 定义一个静态方法,实现斐波那契公式
    static long F(int N){
    // 如果选取的斐波那契的前两个数,都返回“1”,斐波那契的定义
        if(N<=2){
            return 1;
        }
        // 递归
        return F(N-1)+F(N-2);
    }
    
    
    
    public static void main(String[] args) {
//        定义一个int型N
        int N = 0;
        System.out.println("请输入你想得到斐波那契的第几个数:");
//        实例对象ShuRu,输入一个数字
        Scanner ShuRu=new Scanner(System.in);
//        对象的输入属性赋予N变量
        N=ShuRu.nextInt();
//        如果N为0,则输出错误,再次输入
//        这个地方还没有完善,需要再次学习完善 √
    /*标识里为废弃方案
     *  if(N==0){
            System.out.println("您需要输入大于等于0的整数");
            
        }
//    如果输入的不是0,则输出斐波那契公式的得数
        else{
            System.out.println(F(N));
        }
         */
//        设置for循环,当N等于0时,输出错误提示,并且执行再次输入命令,直到输入的值满足跳出循环条件
        for(;N==0;N=ShuRu.nextInt()){
            System.out.println("您需要输入大于等于0的整数");
        }
        System.out.print("第"+N+"位的值为:");
        System.out.println(F(N));
    }
}

这次的程序多次调整,废除了标识里面的if老语句,用新for语句实现了输入的数不大于等于1的时候,要求再次输入数值,直到满足条件为止。

输出结果举例如下

请输入你想得到斐波那契的第几个数:
0
您需要输入大于等于0的整数
0
您需要输入大于等于0的整数
9
第9位的值为:34

关于爱程序网 - 联系我们 - 广告服务 - 友情链接 - 网站地图 - 版权声明 - 人才招聘 - 帮助