黑马程序员技术交流社区
标题:
JAVA书写n的阶乘递归与非递归实现?
[打印本页]
作者:
zly1992008
时间:
2014-6-8 21:30
标题:
JAVA书写n的阶乘递归与非递归实现?
本帖最后由 zly1992008 于 2014-6-9 18:41 编辑
一道公司笔试题~非常有意义
作者:
iWilliam
时间:
2014-6-8 21:45
看看这段代码,刚写的
public class Tes
{
public static void main(String[] args)
{
System.out.println(getFactorial(5));
System.out.println(getFactorial2(5));
}
public static int getFactorial(int n)
{
if(n == 0)
return 1;
else if(n==1)
return 1;
else if(n == 2)
return 2;
else
return n*getFactorial(n-1);
}
public static int getFactorial2(int n)
{
if(n == 0)
return 1;
int val = 1;
for(int i =1; i<=n ; i++)
val *=i;
return val;
}
}
作者:
zly1992008
时间:
2014-6-8 23:36
还可以简化些~,看起来有点不美观
作者:
夏日蓝雪
时间:
2014-6-9 10:45
/**
需求:递归与非递归方式实现n的阶乘。
思路:递归方式,除了0和1都返回1外,其他调用(n*自身);
非递归方式,用for循环不断迭乘实现,但要排除0。
*/
public class Practice {
public static void main(String[] args)
{
System.out.println(diGui(4));
System.out.println(feiDiGui(4));
}
static int diGui(int n)//递归方式实现
{
if(n==0||n==1)
return 1;
else
return n*diGui(n-1);
}
static int feiDiGui(int n)//非递归方式实现
{
if(n==0)
return 1;
else
for(int i=n-1;i>1;i--)
n=n*i;
return n;
}
}
作者:
zly1992008
时间:
2014-6-9 11:19
夏日蓝雪 发表于 2014-6-9 10:45
/**
需求:递归与非递归方式实现n的阶乘。
思路:递归方式,除了0和1都返回1外,其他调用(n*自身);
赞一个!~
作者:
wyqs92
时间:
2014-6-9 16:05
import java.util.Scanner;
/**
需求:递归与非递归实现n的阶乘。
*/
public class DemoClass {
public static void main(String[] args)
{
Scanner in=new Scanner(System.in);
int num=in.nextInt();
// 非递归
int resu1=jiecheng1(num);
System.out.println(resu1);
// 递归
int resu2=jiecheng2(num);
System.out.println(resu2);
}
public static int jiecheng2(int num) {//递归
// TODO Auto-generated method stub
if(num>1){
num=num*jiecheng2(num-1);
}
return num;
}
public static int jiecheng1(int num) { //非递归
// TODO Auto-generated method stub
int j=num;
for(int i=j;i>1;i--){
num=num*(i-1);
}
return num;
}
}
复制代码
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2