黑马程序员技术交流社区
标题:
java基础菜鸟 extend 求教 , 各位大神( 递归小问题 ) ! !
[打印本页]
作者:
.____盒子
时间:
2014-6-24 23:37
标题:
java基础菜鸟 extend 求教 , 各位大神( 递归小问题 ) ! !
本帖最后由 .____盒子 于 2014-6-25 21:39 编辑
public static void main(String[] args) {
int jc = jc(10);
System.out.println(jc);
}
public static int jc(int num){
if(num==1){
return 1;
}else{
return num*
jc
(num-1);
}
jc的阶乘方法
jc为什么乘( num - 1 ); 啊 ? ?
作者:
001可望成功
时间:
2014-6-25 12:36
你不是要算阶乘吗,8*7*6*5.....那当然要乘num-1了
作者:
且听风语
时间:
2014-6-25 13:41
jc(num-1)//将每进一次的数的第一个值保留一直与后一个数相乘
是继续调用本方法的递归啊
哪有楼主所说的 jc*(num-1)的问题
作者:
dispensable
时间:
2014-6-25 14:46
- -你带入数字进去就明了了,假设num是5 ,那第一次该返回 5*(5-1) 然而方法自身调用自身,所以(5-1)又作为参数传入到JC(num) 第二步又返回 4*(4-1)……依此程序最会执行结束就变成 5*4*3*2*1
作者:
.____盒子
时间:
2014-6-25 21:43
递归思想 : 把一个大问题分解成多个小问题 , 再把小问题 分解成多个小问题 ,这倒这个小问题截止到揭发了
作者:
.____盒子
时间:
2014-6-25 21:48
根据地柜的条件 , 判断Num是哦否为 1 , 若为一则返回 1 , 若不是 , 则 else返回当前得到的数乘num-1的阶乘,打印出num-1的阶乘 , 调用该方法就可以得出结果
作者:
千曲生
时间:
2014-6-25 23:14
递归:方法中调用方法本身就叫递归;
思想:把大问题分解成小问题;
而你的问题正是问到递归的这两个思想,
1)你已经确定是递归程序,所以必定存在调用本身方法的地方,所以必调jc()方法
2)把大问题分解成小问题:你是想算10的阶乘,而10!=10*9!,这就是分解,而9!正好需要用到递归的方法就相当于jc(9)=jc(10-1),而9!=9*8!....依次类推就会推算出1!和0!而他们正为实数1所以整个递归可以继续,所以推算出num!=num*(num-1)!
作者:
苏-L-w
时间:
2014-7-2 21:07
学习学习!
作者:
diaolinan
时间:
2014-7-2 21:13
不是jc乘以num-1,应该是调用jc函数,传num-1参数进行运算实现递归调用。
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2