黑马程序员技术交流社区
标题:
递归法
[打印本页]
作者:
vipzh
时间:
2012-12-1 22:42
标题:
递归法
怎么样用递归法求一个数的阶乘啊,求指教?
作者:
pphdsny3
时间:
2012-12-2 10:07
public class test {
/**
* 用于测试
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
for(int i=1; i<10; i++){
System.out.println(i + "的阶乘为:" + getFactorial(i));
}
}
/**
* 创建得到阶乘的方法
* @param n 传入要得到几的阶乘
* @return 得到n的阶乘数
*/
public static int getFactorial(int n){
if(n == 1){
return 1;
}
return n*getFactorial(n-1);
}
}
复制代码
作者:
戴进飘
时间:
2012-12-4 12:15
自己做的一个小练习,给你看看。希望对你有帮助。
public class RecursionTest {
/**
* 做一个小练习,怎么用递归法求一个阶乘运算。
*
* 需求:1到5的相乘
*
*/
public static void main(String[] args) {
System.out.println(method(5));
}
public static int method(int i){
if (i == 1) {
return i;
}
return i * method(i - 1);
}
}
复制代码
作者:
马纵驰
时间:
2012-12-4 13:14
/*
* 递归:方法定义内部调用方法本身的现象被称为递归。
*
* void show()
* {
* show();
* }
*
* 注意:
* 递归一定要有出口条件
* 递归的次数不能过多
*/
public class DiGuiDemo {
public static void main(String[] args) {
// 求5的阶乘
int sum = 1;
for (int x = 2; x <= 5; x++) {
sum *= x;
}
System.out.println(sum);
System.out.println("********************");
// 采用递归做
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-4 16:03
递归做为一种算法在程序设计语言中广泛应用.是指函数/过程/子程序在运行过程序中直接或间接调用自身而产生的重入现像.
程序调用自身的编程技巧称为递归( recursion)。
注意:
(1) 递归就是在过程或函数里调用自身;
(2) 在使用递归策略时,必须有一个明确的递归结束条件,称为递归出口。
递归算法一般用于解决三类问题:
(1)数据的定义是按递归定义的。(Fibonacci函数)
(2)问题解法按递归算法实现。(回溯)
(3)数据的结构形式是按递归定义的。(树的遍历,图的搜索)
以下是我求的1到100以内所有数的阶乘的和:
public int jiecheng(int n)//第n个数的阶乘
{
if (n == 1)
return 1;
else if (n == 2)
return 2;
else
return n * jiecheng(n - 1);
}
public int sumjiecheng(int n)//n个阶乘的和
{
if (n == 1)
return 1;
else if (n == 2)
return 3;
else
return jiecheng(n) + sumjiecheng(n - 1);
}
最后调用:sumjiecheng(100);(计算出1到100以内所有数的阶乘的和)
我们可以调用:jiecheng(8),求的是8的阶乘。
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2