1、问题
实现阶乘和斐波那契数(递归和非递归)
2、代码实现
#include <stdio.h>int num = 0;
//递归实现斐波那契数
// n <=2, f(n) = 1, n > 2 f(n) = f(n - 1) + f();
long fibonacci(int n)
{//计算fibonacci(3)计算了多少次if (n == 3)num++;if (n <= 2){printf("num is %d\n", num);return 1;}return fibonacci(n - 1) + fibonacci(n - 2);
}//非递归实现斐波那契数
long fibonacci1(int n)
{long result = 1, pre_result = 1, next_pre_result;while (n > 2){n -= 1;next_pre_result = pre_result;pre_result = result;result = pre_result + next_pre_result;}return result;
}//递归实现n的阶乘
//n <= 1, f(n) = 1, n > 1 f(n) = n * f(n - 1);
long factorial(int n)
{if (n == 1)return 1;return n * factorial(n - 1);
}