public class Digui {
public static void main(String[] args){
//规律 1 1 2 3 5 8 13
for (int i = 1; i < 46; i++) {
// System.out.println(getSum(i));
// System.out.println(getSum2(i));
// System.out.println(getSum3(i,0,1));
}
}
/**
* 递归求和
* @param n
* @return
*/
public static int getSum(int n){
if (n<=2){
return 1;
}
return getSum(n-1)+getSum(n-2);
}
/**
* 循环求和
* @param n
* @return
*/
public static int getSum2(int n){
if (n<=2){
return 1;
}
int a = 1;
int b = 1;
int c = 0;
for (int i = 0; i <n-2 ; i++) {
c = a + b;//2 3 5
a = b;//1 2 3
b = c;//2 3 5
}
return c;
}
/**
* 尾递归求和
* @param n
* @return
*/
public static int getSum3(int n,int pre,int curr){
if (n == 1){
return curr;
}
return getSum3(n-1,curr,curr+pre);
}
}
public class Digui2 {
public static void main(String[] args) {
//规律 1 2 2 4 8 32
for (int i = 1; i < 10; i++) {
// System.out.println(getResult1(i));
// System.out.println(getResult2(i));
System.out.println(getResult3(i,2,1));
}
}
public static int getResult1(int n) {
if (n <= 2) {
return n;
}
return getResult1(n - 1) * getResult1(n - 2);
}
public static int getResult2(int n) {
if (n <= 2) {
return n;
}
int a = 1;
int b = 2;
int c = 0;
for (int i = 0; i < n - 2; i++) {
c = a * b;
a = b;
b = c;
}
return c;
}
public static int getResult3(int n,int pre,int curr) {
if (n == 1){
return curr;
}
return getResult3(n-1,curr,curr*pre);
}
}