我知道这种类型的方程可以用很多方法解决,但是我想用递归树方法来解决方程。任何人都可以告诉我如何用递归树方法完成它?
答案 0 :(得分:3)
递归树用于绘制递归算法的执行。您描述的这种重复与递归Fibonacci算法基本相同,其中这个等式:
F(n) = F(n-1) + F(n-2)
使用如下算法递归求解:
int fib(int x) {
if (x == 0)
return 0;
if (x == 1)
return 1;
return fib(x-1)+fib(x-2); //Does this recurrence look familiar?
}
为输入5生成此树:
5
/ \
/ \
/ \
/ \
/ \
/ \
/ \
4 3
/ \ / \
/ \ / 1
/ \ 2
3 2 / \
/ \ / \ 1 0
/ \ / \
2 1 1 0
/ \
/ \
1 0
上面,我为Fibonacci序列绘制了一个非常简单的递归树。我只是插入第一个数字(5)并继续从它的后续递归调用生成一个简单的树。您可以看到树的高度为N且分支因子为2,因此我们的上限必须为O(2 ^ n)。您可以对此进行概括,以获得您希望使用此方法查找的特定问题和任何其他重复的答案。