java递归函数例子_java递归算法的例子。

本文通过四个经典的递归算法实例进行讲解,包括计算数值的阶乘、生成斐波那契数列、实现汉诺塔游戏的挪动过程以及对输入字符串的所有可能排列进行输出。这些递归算法展示了在解决问题时如何利用递归思想,对于理解和应用递归算法具有很好的示例作用。
摘要由CSDN通过智能技术生成

展开全部

阶乘:

要求:给定一个数值,计算出它的阶乘值,例如5的阶乘为5*4*3*2*1

实现62616964757a686964616fe59b9ee7ad9431333365646232:

[html] view plaincopy

 // 利用递归实现一个数的阶乘值      private static BigDecimal getNum(BigDecimal inNum) {          if (inNum.compareTo(BigDecimal.ONE) == 0) {              return inNum;          }          return inNum.multiply(getNum(inNum.subtract(BigDecimal.ONE)));      }

(2)Fibonacci数列:1,1,2,3,5,8,13……

要求:找出数列中指定index位置的数值

实现:

[html] view plaincopy

 // 利用递归实现了Fibonacci数列      private static int fab(int index) {          if (index == 1 || index == 2) {              return 1;          } else {              return fab(index - 1) + fab(index - 2);          }      }

(3)汉诺塔

要求:汉诺塔挪动

实现:

[html] view plaincopy

  private static final String DISK_B = "diskB";       private static final String DISK_C = "diskC";       private static final String DISK_A = "diskA";       static String from=DISK_A;    static String to=DISK_C;    static String mid=DISK_B;      public static void main(String[] args) {        String input=JOptionPane.showInputDialog("please input the number of the disks you want me move.");        int num=Integer.parseInt(input);        move(num,from,mid,to);    }

[html] view plaincopy

 // 利用递归实现汉诺塔      private static void move(int num, String from2, String mid2, String to2) {          if (num == 1) {              System.out.println("move disk 1 from " + from2 + " to " + to2);          } else {              move(num - 1, from2, to2, mid2);              System.out.println("move disk " + num + " from " + from2 + " to " + to2);              move(num - 1, mid2, from2, to2);          }      }

(4)排列组合

要求:将输入的一个字符串中的所有元素进行排序并输出,例如:你给出的参数是"abc",

则程序会输出

abc

acb

bac

bca

cab

cba

实现:

[html] view plaincopy

  public static void permute(String str) {         char[] strArray = str.toCharArray();       permute(strArray, 0, strArray.length - 1);   }

[html] view plaincopy

 // 利用递归实现,将输入的一个字符串中的所有元素进行排序并输出      public static void permute(char[] list, int low, int high) {          int i;          if (low == high) {              String cout = "";              for (i = 0; i <= high; i++) {                  cout += list[i];              }              System.out.println(cout);          } else {              for (i = low; i <= high; i++) {                  char temp = list[low];                  list[low] = list[i];                  list[i] = temp;                  permute(list, low + 1, high);                  temp = list[low];

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值