题目

LintCode题解:LintCode_3793斐波那契数列(C 语言版)_斐波那契数列

样例

LintCode题解:LintCode_3793斐波那契数列(C 语言版)_递归_02

LintCode题解:LintCode_3793斐波那契数列(C 语言版)_循环代替递归_03

LintCode题解:LintCode_3793斐波那契数列(C 语言版)_斐波那契数列_04

题解

#include <stdio.h>

long fibonacci(int n) {
    // Write your code here
    if (1 == n)
        return 1;
    
    if (2 == n)
        return 1;
    
    //a b temp
    long a = 1;
    long b = 1;
    long temp = a + b;
    for (int i = 2; i < n; i++)
    {
        temp = a + b;
        a = b;
        b = temp;
    }

    return temp;
}

int main() {
    int n;
    scanf("%d", &n);
    printf("F(%d) = %ld\n", n, fibonacci(n));
    return 0;
}
  • 1.
  • 2.
  • 3.
  • 4.
  • 5.
  • 6.
  • 7.
  • 8.
  • 9.
  • 10.
  • 11.
  • 12.
  • 13.
  • 14.
  • 15.
  • 16.
  • 17.
  • 18.
  • 19.
  • 20.
  • 21.
  • 22.
  • 23.
  • 24.
  • 25.
  • 26.
  • 27.
  • 28.
  • 29.
  • 30.

难点

此题的难点就是如果递归调用就会出现运行时间过长的情况,导致题目无法通过,故此处采用循环代替递归的方法,来解决此问题。