1. 程式人生 > >遞歸的幾個經典例子

遞歸的幾個經典例子

void har logs 階乘 tin scan mov rom n)

註意:構造方法不可遞歸,否則是無限創建對象;

遞歸的幾個經典例子:
1.HannoiTower

  1 import java.util.Scanner;
  2  public class HanoiTower{
  3      //level代表盤子個數;三個char類型代表柱子
  4     public static void moveDish(int level, char from, char inter, char to){
  5          if(level == 1){
  6              System.out.println(""+from+"移動盤子1號到
"+to); 7 }else{ 8 9 moveDish(level-1,from,to,inter);//調用自身 10 System.out.println(""+from+"移動盤子"+level+"號到"+to); 11 moveDish(level-1,inter,from,to); 12 } 13 } 14 15 public static void main(String[] args){ 16 Scanner sc = new
Scanner(System.in); 17 System.out.println("請輸入盤子個數"); 18 int n = sc.nextInt(); 19 moveDish(n,‘a‘,‘b‘,‘c‘); 20 } 21 } 22


2.sum

  1 import java.util.Scanner;
  2  public class Sum{
  3      public static void main(String[] args){
  4          Scanner sc = new Scanner(System.in);
  5
System.out.println("請輸入n:"); 6 int n = sc.nextInt(); 7 int sum1 = sum(n); 8 System.out.println(sum1; 9 } 10 11 public static int sum(int n){ 12 if(n == 1){ 13 return 1; 14 }else{ 15 return n+sum(n-1); 16 } 17 } 18 } 19


3.factorial

  1 import java.util.Scanner;
  2  public class Factorial{
  3      public static void main(String[] args){
  4          Scanner sc = new Scanner(System.in);
  5          System.out.println("請輸入一個小於20的整數,我會幫你求出它的階乘:");
  6          int n = sc.nextInt();
  7          int fac1 = fac(n);
  8          System.out.println(n+"的階乘為:"+fac1);
  9          System.out.println("~看我棒不棒~~");
 10      }
 11 
 12     public static int fac(int n){
 13          if(n == 1){B
 14              return 1;
 15          }else{
 16              return n*fac(n-1);
 17          }
 18      }
 19  }
 20 



4.sumFactorial

  1 import java.util.Scanner;
  2  public class SumFactorial{
  3      public static void main(String[] args){
  4          Scanner sc = new Scanner(System.in);
  5          System.out.println("請輸入一個小於20的整數:");
  6          int n = sc.nextInt();
  7          int sf = sumFac(n);
  8          System.out.println(sf);
  9      }
 10      //階乘和的累加
 11     public static int sumFac(int n){
 12          if(n == 1){
 13              return 1;
 14          }else{
 15              return fac(n)+sumFac(n-1);
 16          }
 17      }
 18      //求階乘
 19     public static int fac(int n){
 20          if(n == 1){
 21              return 1;
 22          }else{
 23              return n*fac(n-1);
 24          }
 25      }
 26  }

5.使用遞歸,遍歷 1 至100之間的每個數字

  1 public class Number{
  2      public static void main(String[] args){
  3          iterator(100);
  4      }
  5 
  6     public static void iterator(int n){
  7          if(n >= 1){
  8              System.out.print(n+"\t");
  9              n--;
 10              iterator(n);
 11          }
 12 
 13     }
 14  }
 15 
 16 
 17 

遞歸的幾個經典例子