1,1,2,3,5,8.....使用java代码输出第N个数字的值是多少

这里可以直接使用递归来实现该需求:

需求:

输入第n个数字,就依此规律输出对应的值

1、首先要确保输出的是整数,这里方法有很多,可以用正则,也可以用sc.next()

等 在这里我使用的是hasNextInt();

代码如下:

复制代码
import java.util.Scanner;

/**
 * 使用递归实现1,1,2,3,5,8..... 
 * @ClassName: Math2 
 * @Description: TODO
 * @author: 安生
            优秀的判断力来自经验,但经验来自于错误的判断。
 * @date: 2019年12月17日 下午7:11:52
 */

public class Math2 {
    
    static Scanner sc = new Scanner(System.in);
    
    //确保输入的是整数:
    public static int getInt() {
        System.out.println("请输入整数:");
        while(!sc.hasNextInt()) {
            System.out.println("输入的不是整数,请重新输入:");
            sc.next();
        }
        int num = sc.nextInt();
        return num;
    
    }
    
    public static void main(String[] args) {
        System.out.println(getInt());
    }
    

}
复制代码

效果如下:

 

2、递归的第一种方法:

 

复制代码
//这里使用long 类型 因为int类型可能会出现脏数据
    public static long test(int n) {
        if(n==0) {
            System.out.println("结束输出");
            return 0;
        }
        if(n==1 || n==2) {
            return 1;
        }
        return test(n-2)+test(n-1);
    }
    
    //1,1,2,3,5,8,13,21
    public static void main(String[] args) {
        long result = 0;
        do {
            result = test(getInt());
            System.out.println(result);
        }while(result!=0);
        
    }
复制代码

测试第一种方法的结果如下:

 

 第二种递归方法:

复制代码
public static long test2(int n) {
    long a = 1;
    long b = 1;
    if(n==0) {
        System.out.println("输出结束!");
        return 0;
    }else if(n==1 || n==2) {
        return 1;
    }else {
        for(int i = 0; i<n-2; i++) {
            long tem = 0;
            tem = a;
            a += b;
            b = tem;    
        }
        return a;
    }
}
    
    //1,1,2,3,5,8,13,21
    public static void main(String[] args) {
        long result = 0;
        do {
            result = test2(getInt());
            System.out.println(result);
        }while(result!=0);
        
    }
    
复制代码

测试结果:

本文作者:AxeBurner

本文链接:https://www.cnblogs.com/bichen-01/p/12056586.html

版权声明:本作品采用知识共享署名-非商业性使用-禁止演绎 2.5 中国大陆许可协议进行许可。

posted @   AxeBurner  阅读(1354)  评论(0编辑  收藏  举报
点击右上角即可分享
微信分享提示
💬
评论
📌
收藏
💗
关注
👍
推荐
🚀
回顶
收起
  1. 1 404 not found REOL
404 not found - REOL
00:00 / 00:00
An audio error has occurred.