剑指offer(八)之斐波那契数列

题目描述

大家都知道斐波那契数列,现在要求输入一个整数n,请你输出斐波那契数列的第n项。

思路分析:

1.如果直接用递归:

public class Solution {
    public int Fibonacci(int n) {
        if(n<=0){
            return 0;
        }else if(n==1||n==2){
            return 1;
        }else{
            int x=Fibonacci(n-1)+Fibonacci(n-2);
            return x;
     
              }
 
                           }
}

发现有时难以再规定的时间内算出,因为递归不能很好地利用重复元素,数据大的时候,用时就多了。

2.用迭代方法

public class Solution {
    public int Fibonacci(int n) {
      int num1=0,num2=1;
      int result=0;
      if(n<=0){
          return 0;
      }else if(n==1){
          return 1;
      }else{
          for(int i=2;i<=n;i++){
         
  result=num1+num2;
       num1=num2;
         
  num2=result;
          }
      }
        return result;
    }
}
 

你可能感兴趣的:(递归,斐波那契数列,剑指offer)