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

需求:

输入第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);

    }
    

测试结果:

12-16 16:40