#Z0327. 数学递推式的递归实现

数学递推式的递归实现

No testdata at current.

像斐波那契数列这样,有很多数列满足如下的性质:

在满足特定条件时,直接算出结果

否则,根据前面一到若干项的运算结果得出当前项的结果

例如:004.jpg

这样一个函数应该如何转换成程序呢?

实现方法

将递归式划分成两部分,一部分为边界条件,一部分为递推关系:

005.jpg

其中,红框内的为边界条件,蓝框内的为递推关系。

对于边界条件,用条件分支来实现:

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; 
}