将递归函数改为尾递归,或者是递推函数,求第45,46,47,48个Fibonacci数所花费的时间,观察效率是否得到提高。

递推:

package 实验二;
public class Fi数列递推 {
	public static void main(String args[]){
		递推 f=new 递推();
		for(int i=45;i<=48;i++){
			long start=System.currentTimeMillis();
			System.out.println(f.F(i));
			long end=System.currentTimeMillis();
			long time=end-start;
			System.out.println("第"+i+"个Fibonacci数列的运行时间为:"+time);
		}
	}
}
class 递推{
	long F(int n){
		if(n<=1)
			return 1;
		else{
			long a0=1;
			long a1=1;
			long a2=0;
			for(int i=2;i<n;i++) {
				a2=a0+a1;
				a0=a1;
				a1=a2;
			}
			return a2;
		}
	}
}

猜你喜欢

转载自blog.csdn.net/abc1498880402/article/details/82907961