Java遞歸調用測試小demo

  • 遞歸簡單點說就是方法調用自己本身。直到滿足某一條件退出方法。 下來結合一個小例子來說明其用途

package feilong.day1221;
import java.util.Scanner;
/**
 * 遞歸調用 求階乘
 * 5=5*4*3*2*1=120
 * @author Nanfeilong
 */
public class Diguidiaoyong_jiecheng {
    public static void main(String[] args) {
        System.out.println("輸入整數求階乘:");
        Scanner scanner = new Scanner(System.in);
        int a = scanner.nextInt();
        System.out.println(multiply(a));
        scanner.close();
    }
    public static long multiply(int b) {
        if(b<=0)  return 1;//程序出口
        else   return b*multiply(b-1);//multiply(b-1) 調用本身
    }

}

如果輸入的是5的話,那麼結果就等於 5*4*3*2*1=120

  • 如果還不明白的話我們在來看一個例子,
package feilong.day1221;

import java.util.Scanner;

/**
 * 遞歸調用 (a)1+2+3+4...100
 * @author Nanfeilong
 */
public class Diguidiaoyong {
    public static void main(String[] args) {
        System.out.println("求和從輸入的數加到100");
        int a = new Scanner(System.in).nextInt();
        System.out.println(addnum(a));
    }
    public static int addnum(int num){
        if(num==100)   return 1;//程序出口
        else   return num+addnum(num+1);//addnum(num+1) 調用本身
    }
}

例如輸入98 那麼結果就是98+99+1=198 爲什麼呢,

因爲當等於100時返回的是1

  • 斐波那契數列就是後面的一個數是前面兩個數的之和
/**
 * 遞歸使用斐波那契數列
 * @author Nanfeilong
 *
 */
package feilong.day1221;

import java.util.Scanner;


public class Test1 {
    public static void main(String[] args) {
        /*
         * 斐波那契數列
         * 1  1  2  3  5  8  13  21   34   55  89  144...
         */
        System.out.println("求第幾個斐波那契數列?");
        int n = new Scanner(System.in).nextInt();
        long r = g(n);
        long f = f(n);
        System.out.println("斐波那契數列的第"+n+"個數是:"+f);
        System.out.println(r);
    }

    private static long g(int n) {
        long a = 1;
        long b = 1;
        for(int i = 3; i<=n; i++){
            b=a+b;
            a=b-a;
            System.out.println("===========");
            System.out.println(b);
            System.out.println(a);
        }
        return b;
    }

    private static long f(int n) {
        if(n==1||n==2) {
            return 1;
        }
        return f(n-1)+f(n-2);
    }
}

求第幾個斐波那契數列?
5

2
1

3
2

5
3
斐波那契數列的第5個數是:5
5

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章