您的位置:首页 > Web前端

【剑指offer】7.斐波那契数列

2018-03-10 23:58 513 查看
/**
*题目描述:
*大家都知道斐波那契数列,现在要求输入一个整数n,请你输出斐波那契数列的第n项。
*n<=39
*/
import java.util.ArrayList;

public class Solution {

//方法一:循环
public int Fibonacci(int n) {
int preNum=1;
int prePreNum=0;
int result=0;
if(n==0)
return 0;
if(n==1)
return 1;
for(int i=2;i<=n;i++){
result=preNum+prePreNum;
prePreNum=preNum;
preNum=result;
}
return result;
}

//方法二:递归
public int Fibonacci1(int n) {

return Fibonacci1(n,0,1);
}

public int Fibonacci1(int n,int acc1,int acc2){
if(n==0)
return 0;
if(n==1)
return acc2;
else
return Fibonacci1(n - 1, acc2, acc1 + acc2);
}

//尽量不用递归,如果数很大时,会很耗时
public static void main(String[] args) {

Solution s=new Solution();
System.out.println(s.Fibonacci(35));
System.out.println(s.Fibonacci1(35));
}
}

/*
Fibonacci(4) = Fibonacci(3) + Fibonacci(2);
&nb
4000
sp; = Fibonacci(2) + Fibonacci(1) + Fibonacci(1) + Fibonacci(0);
= Fibonacci(1) + Fibonacci(0) + Fibonacci(1) + Fibonacci(1) + Fibonacci(0);
*/
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: