Java方法递归(含详解) | 您所在的位置:网站首页 › 递归系统模型分析方法好学嘛 › Java方法递归(含详解) |
方法递归
递归很熟悉了,我们再来谈谈递归。 定义: 一个方法在执行过程中调用自身, 就称为 “递归”. 递归,相当于数学上的 “数学归纳法”, 有一个起始条件, 然后有一个递推公式. 例如, 我们求 N! 起始条件: N = 1 的时候, N! 为 1. 这个起始条件相当于递归的结束条件. 递归公式: 求 N! , 直接不好求, 可以把问题转换成 N! => N * (N-1) 举例: 1.递归求 N 的阶乘 class FactorialSum{ public int factorialsum(int x){ if(x==1){ return 1; } return x*factorialsum(x-1); } }这里分析一下这个吧: class FactorialSum{ public int factorialsum(int x){ System.out.println("函数开始, x = " + x); if(x==1){ return 1; } int ret=x*factorialsum(x-1); System.out.println("函数结束, x = " + x + " ret = " + ret); return ret; } }运行结果: 这样理解,终止条件为 1,如果到1了就返回上一层,那么; 10 !=1 进入10+sequencesum(9); 9 !=1 进入9+sequencesum(8); . . . 1==1 返回上一层,并且sequensum(1)=1 (ps:最深层次); 开始返回上一层 1+2=3 返回上一层 ,并且sequensum(2)=3 . . . 10+sequencesum(9)=10+45=55 返回 55 3.按顺序打印一个数字的每一位 class SequencePrint{ public void sequenceprint(int x){ if(x>9){ sequenceprint(x/10); } System.out.println(x%10); } }这里我输入的是1234; 1234>9 进入sequence(1234/10)=sequence(123); 123>9 进入sequence(123/10)=sequence(12); 12>9 进入sequence(12/10)=sequence(1); 110 return 3+sequencenumsum(12); 12>10 return 2+sequencenumsum(1); 1 |
CopyRight 2018-2019 实验室设备网 版权所有 |