#Z0327. 数学递推式的递归实现
数学递推式的递归实现
No testdata at current.
像斐波那契数列这样,有很多数列满足如下的性质:
在满足特定条件时,直接算出结果
否则,根据前面一到若干项的运算结果得出当前项的结果
例如:
这样一个函数应该如何转换成程序呢?
实现方法
将递归式划分成两部分,一部分为边界条件,一部分为递推关系:
其中,红框内的为边界条件,蓝框内的为递推关系。
对于边界条件,用条件分支来实现:
if (x <= 0) {
return 0;
} else if (x == 1) {
return 1;
}
对于递推关系,用递归调用来实现:
else if (x > 1 && x % 2 == 0) {
return 2 * f(x / 2) + f(x / 2 - 1);
} else {
return 3 * f((x + 2) / 2) - 1;
}