天天看点

Java编写递归与斐波那契递归

面试的时候经常会有手写递归和手写斐波那契递归两种.

递归代码

public class DiGui {
    //设置初始sum为0
    private int sum = 0;
    //设置初始num为1
    private int num = 1;

    public int Sum(int maxNum){
        if ((num <= maxNum)){
            sum += num;
            num++;
            Sum(maxNum);//循环调用
        }
        return sum;
    }

    public static void main(String[] args) {
        DiGui testDemo = new DiGui();
        int totalSum = testDemo.Sum(10);
        System.out.println(totalSum);
    }
}

           

斐波那契递归代码

public class PrintFib {
    //建立一个函数,用于计算数列中的每一项
    public static int fib(int num) {
        //判断:是否是第一个数和第二个数
        if(num == 1 || num == 2) {
            return 1;
        }else {
            //循环调用本函数
            return fib(num - 2) + fib(num - 1);
        }
    }
    //主函数(程序入口)
    public static void main(String[] args) {

        //建立一个for循环,用于打印第一个至第十个数字
        for(int i = 1;i <= 10;i++) {
            //调用函数进行打印
            System.out.print(fib(i) + "\t");
        }
    }
}