黑马程序员技术交流社区
标题:
递归法
[打印本页]
作者:
vipzh
时间:
2012-12-1 22:41
标题:
递归法
怎么样用递归法求一个数的阶乘啊,求指教?
作者:
朝花夕拾
时间:
2012-12-1 23:03
public class DiGuiDemo {
public static void main(String[] args) {
// 求5的阶乘
DiGuiDemo dgd = new DiGuiDemo();
System.out.println(dgd.jc(5));
}
// 递归求阶乘
/*
* 当n等于1的时候,结果就是1. 当n不等于1的时候,结果是:n*(n-1)!
*/
public int jc(int n) { //5 - 4 - 3 - 2 - 1
if (n == 1) {
return 1;
} else {
return n * jc(n - 1);
//5*jc(4)
//5*4*jc(3) 5*4*6
//5*4*3*jc(2) 5*4*3*2
//5*4*3*2*jc(1) 1
}
}
}
作者:
何伟
时间:
2012-12-2 00:39
本帖最后由 何伟 于 2012-12-2 00:57 编辑
public int jc(int x)//第x个数的阶乘
{
if (x >0)
else if( x==1)
return 1;
else
return x * jc(x - 1);
//jc(x-1)就是在调用自己,直到不满足if语句的条件,说白了就是函数调用,只不过调用的是自己而已。递归和循环语句一样都需要结束条件
}
下面是我找到的总结
递归做为一种算法在程序设计语言中广泛应用.是指函数/过程/子程序在运行过程序中直接或间接调用自身而产生的重入现像.
程序调用自身的编程技巧称为递归( recursion)。
注意:
(1) 递归就是在过程或函数里调用自身;
(2) 在使用递归策略时,必须有一个明确的递归结束条件,称为递归出口。
递归算法一般用于解决三类问题:
(1)数据的定义是按递归定义的。(Fibonacci函数)
(2)问题解法按递归算法实现。(回溯)
(3)数据的结构形式是按递归定义的。
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2