C-斐波那契数列

公式

f(n)=f(n1)+f(n2)

递归实现

#include <stdio.h>
#include "stdarg.h"


unsigned int fibonacci(unsigned int n) {
    if (n == 1 || n == 0) {
        return n; //f(0) = 0 ,f(1) = 1
    } else {
        return Fibonacci(n - 1) + Fibonacci(n - 2);
    }
}

int main(void) {
    printf("Fibonacci(3) :%d\n", fibonacci(3));
    printf("Fibonacci(5) :%d\n",fibonacci(5));
    printf("Fibonacci(10) :%d\n",fibonacci(10));
    return 0;
}

循环实现;

unsigned int fibonaccibyIteration(unsigned int n) {
    if (n == 1 || n == 0) {
        return n; //f(0) = 0 ,f(1) = 1
    }
    unsigned int last = 0;
    unsigned int current = 1;

    for (int i = 0; i <= n - 2; ++i) {
        unsigned int temp = current;
        current += last;
        last = temp;
    }
    return current;
}

Warning

循环使用的内存要少些,如果对于传入参数非常大,则需要使用循环。