C-斐波那契数列
公式
递归实现
#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
循环使用的内存要少些,如果对于传入参数非常大,则需要使用循环。