编辑代码

#include <stdio.h>

// 斐波那契递归实现
int fibonacci0(int n) {
	if (n < 1) return 0;
	if (n <= 2) return 1;
	
	return fibonacci0(n-1) + fibonacci0(n-2);
}

// 斐波那契非递归实现
int fibonacci1(int n) {
	if (n < 1) return 0;
	int prepreNum = 1;
	int preNum = 1;
	int i;
	for (i=3; i<=n; ++i) {
		int snap = prepreNum + preNum;
		prepreNum = preNum;
		preNum = snap;
	}
	return preNum;
}

int main() {
	printf("0: %d\n",  fibonacci0(0));
	printf("1: %d\n",  fibonacci0(1));
	printf("2: %d\n",  fibonacci0(2));
	printf("5: %d\n",  fibonacci0(5));
	printf("10: %d\n", fibonacci0(10));
	printf("------\n");
	printf("0: %d\n",  fibonacci1(0));
	printf("1: %d\n",  fibonacci1(1));
	printf("2: %d\n",  fibonacci1(2));
	printf("5: %d\n",  fibonacci1(5));
	printf("10: %d\n", fibonacci1(10));
	return 0;
}