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);
        
    }
    

测试结果:

posted @ 2019-12-17 20:13  AxeBurner  阅读(1326)  评论(0编辑  收藏  举报