Appearance
- 一个递归函数由出口和子问题组成
比如计算斐波那契数列 :
c
#include <stdio.h>
/** a, b 是斐波那契数列头两个数字 */
int fibo(int n, int a, int b) {
return n == 0 ? a : fibo(n - 1, b, a + b);
}
int main(int argc, char const *argv[]) {
int n = 20;
printf("斐波那契第%d个数字是: %d\n", n, fibo(n, 0, 1));
return 0;
}- 递归函数的出口是
n == 0 - 递归函数的的子问题是
a + b, 即前两项相加