问题:
1 1 2 3 5 8 13 21 34...根据规律设计程序
方式一:递归
package com;
public class test {
public static void main(String[] args) {
System.out.println(param(10));
}
//1 1 2 3 5 8 13 21 34..
public static long param(long pp) {
long aa=0;
if (pp == 0 || pp == 1) {
return 1;
}
else
{
aa= param(pp - 2) + param(pp - 1);
return aa;
}
}
}
方式二:值替换
package com;
import java.math.BigDecimal;
import java.math.BigInteger;
import java.util.Scanner;
public class test1 {
public static void main(String[] args) {
long m = 1L; //第一项值为1
long n = 1L; //第二项值为1
long k = m + n; //第三项值为前两项的和
for (int i = 0; i < 10; i++) {
m = n;
n = k;
k = m + n;
System.out.println(k);
}
}
}
注意事项:
1、递归方式:当实参超过40时,性能较差,处理非常慢
2、非递归方式:性能优于递归
3、会出现数据溢出,需要进行转换