public static long OneStepOrTwoStepSolution(int num) { if(num == 1 || num ==2) { return num; } return OneStepOrTwoStepSolution(num-1)+OneStepOrTwoStepSolution(num-2); }
public static long OneStepOrTwoStepSolution1(int num) { long one = 2; long two = 1; if(num == 1 || num ==2) { return num; long sum = 0L; for(int i = 3 ; i <= num ;i++) { sum = one + two; two = one; one = sum; } return sum; }
两种方式分别以n=5,n=50 测试,结果以下java
n = 5:
递归–实现结果:8
递归–所用时间:<1 ms
迭代–实现结果:8
迭代–所用时间:<1 msweb
n=50
递归–实现结果:20365011074
递归–所用时间:38940 ms
迭代–实现结果:20365011074
迭代–所用时间:<1 mssvg
测试结果:随着n的不断增大,递归所用时间远超过迭代测试