java递归

来源:互联网 发布:网上上课的软件 编辑:程序博客网 时间:2024/06/11 22:59

所谓递归,是指程序调用自身,当然,递归不会无休止地调用下去,它必然有一个出口,当满足条件时程序也就结束了,不然的话,那就是死循环了。

[java] view plain copy
  1. package test;  
  2.   
  3. /** 递归类Recursion的定义 */  
  4. public class Recursion {  
  5.     // 递归方法DecimalToBinary,把一个十进制数转换成二进制数  
  6.     public static void DecimalToBinary(int num) {  
  7.         if (num == 0) { // 当num=0时,循环结束  
  8.             return;  
  9.         } else {  
  10.             DecimalToBinary(num / 2); // 调用递归方法  
  11.             System.out.print(num % 2);  
  12.         }  
  13.     }  
  14.   
  15.     // 递归方法sum,求1+2+...+100 的求和  
  16.     public static int sum(int num) {  
  17.         if (num > 0) {  
  18.             return num + sum(num - 1); // 调用递归方法  
  19.         } else {  
  20.             return 0// 当num=0时,循环结束  
  21.         }  
  22.   
  23.     }  
  24.   
  25.     // 递归方法yueshu,求两个数的最大公约数 ,用两个数的绝对值与这两个数较小的那个一直比较,直到相等为止。  
  26.     public static void yueshu(int num1, int num2) {  
  27.         if (num1 == num2) {  
  28.             System.out.println(num1); // num1=num2时,结束  
  29.         } else {  
  30.             yueshu(abs(num1 - num2), min(num1, num2)); // 调用递归方法  
  31.         }  
  32.   
  33.     }  
  34.   
  35.     // 求两个数绝对值  
  36.     public static int abs(int num) {  
  37.         return num > 0 ? num : -num;  
  38.     }  
  39.   
  40.     // 求两个数较小者  
  41.     public static int min(int num1, int num2) {  
  42.         return num1 > num2 ? num2 : num1;  
  43.     }  
  44.   
  45.     // 递归方法hanon,求瀚诺塔函数  
  46.     public static void hanon(int n, char a, char b, char c) {  
  47.         if (n == 1) {  
  48.             move(1, a, c);// 最后一种情况是,把A柱子上盘子移到C柱子上。  
  49.             return;  
  50.         }  
  51.         hanon(n - 1, a, c, b); // 递归,把n-1个盘子从A 盘上借助C盘移到B盘上  
  52.         move(n, a, c);// 调用move()方法  
  53.         hanon(n - 1, b, a, c);// 递归,把把n-1个盘子从B盘上借助A盘移到C盘上  
  54.     }  
  55.   
  56.     public static void move(int n, char a, char c) {  
  57.         System.out.println(n + ":" + a + "-->" + c);// 打印移动盘子情况  
  58.     }  
  59.   
  60.     // 主函数main  
  61.     public static void main(String[] args) {  
  62.   
  63.         yueshu(128); // 求最大公约数  
  64.         hanon(3'A''B''C'); // 求瀚诺算法  
  65.         System.out.println(sum(100));// 求和  
  66.         DecimalToBinary(103);// 十进制转换二进制  
  67.   
  68.     }  
  69.   
  70. }  

原创粉丝点击
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 十八线女配穿进后宫演顶流 斗罗:重生胡列娜在武魂殿当团宠 大景女星官 报!娘娘在种田路上福星高照 靠美食成为星际首富 夫人她每天都想摸鱼摆烂 寒门重生女 穿书:侧妃她要改剧本 作妖小青梅总想遇见我 重生成团宠文炮灰 全师门就我一个人是废柴 反派家的团宠崽崽是神兽 越界臣服 重生之鱼刺救我狗命 修仙:哈哈哈鸡汤来咯 萌宝来袭:带着空间穿九零 快跑,宿主她不对劲 小哭包她软软糯糯 超甜!重生后左相被我撩到腿软 超真实探案推理游戏 惊!霍总怀里的小娇妻失忆后想逃婚 我和暴君有个崽 荒野求生我靠传播非遗爆红全世界 肆意难撩 女尊之夫郎他娇软又呆萌 穿书后,小茶精在疯批怀里撒娇 拯救六界从谈恋爱开始 重生后前世宿敌说要养我 她的沙雕又暴露了 在虐文里绑定了男主系统 我在末世成了领主大人 玄学老祖上综艺后轰动全球了 我继承了老公的神位 仵作掌中娇 世子爷她不可能是女的 穿进红楼后,我成了人生赢家 假死后夫人她称霸黑莲界 奶萌小团宠她觉醒了种田系统 巨星的大佬青梅 总裁的小撩精又生气了 开荒种田:农门辣妻有空间