递归有好有坏的……

迭代和递归,各有各的好,在我看来,递归好了程序员,害了电脑,而迭代相反,他要求程序员为程序考虑的很多,运行起来就会好很多。
举个例子 斐波那契数吧
以下是分别用两者实现的。请比较

package chap18;

import java.util.Scanner;


//用递归法是实现的斐波那契数
public class febo {

/**
* @param args
*/
public static void main(String[] args) {
while(true)
{
System.out.println("请输入你要计算的那项");
Scanner cin = new Scanner(System.in);
int n = cin.nextInt();
MyTimer myTimer = new MyTimer();
myTimer.start();
System.out.println(feibo(n));
myTimer.end();
System.out.println("用时 "+myTimer.getUseTime()+"毫秒");
}



}


/*
* 斐波那契方法
* @param n 要求的那项位置
* @return 结果
*/

public static int feibo(int n)
{

if(n <= 2)
return 1;
else
{
return feibo(n-1)+feibo(n-2);
}
}

}


运行结果:
请输入你要计算的那项
40
102334155
用时 1500毫秒
请输入你要计算的那项


package chap18;

import java.util.Scanner;

/*
* 采用迭代方法解决的斐波那契数列
*/
public class feibo1 {

/**
* @param args
*/
public static void main(String[] args) {
while(true)
{
System.out.println("请输入你要计算的那项");
Scanner cin = new Scanner(System.in);
int n = cin.nextInt();
MyTimer myTimer = new MyTimer();
myTimer.start();
System.out.println(feibo(n));
myTimer.end();
System.out.println("用时 "+myTimer.getUseTime()+"毫秒");
}



}
/*
* 斐波那契方法 采用迭代方法解决
* @param n 要求的那项位置
* @return 结果
*/
public static int feibo(int n)
{
int start1 = 1;
int start2 = 1;
for(int i = 2; i < n; i++)
{
int temp = start1+start2;
start1 = start2;
start2 = temp;

}
return start2;
}
}



运行结果:
请输入你要计算的那项
40
102334155
用时 0毫秒
请输入你要计算的那项


还有啊,开个玩笑,如果把n取到50(不用很大,50足矣),用第一种,只有指望intel产个四核了……
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值