【发布时间】:2014-08-08 04:45:33
【问题描述】:
我正在为我的计算机科学期末考试而学习,并且正在回顾一些我在课堂上复习时从未完全掌握的东西。主要是递归。我想我已经掌握了简单递归示例的窍门,但我正在尝试完成之前考试中的一个示例,并且无法弄清楚应该如何完成。
问题来了:
Texas numbers (Tx(n)) are defined as follows for non-negative numbers (assume true):
Tx(n) = 10 if n is 0
Tx(n) = 5 if n is 1
Tx(n) = 2*(Tx(n-1) + Tx(n-2) if n >= 2
然后我们要为德州数写递归函数,在测试后进行一些修正后,这是我想出的,我认为是对的,但不是 100% 确定。
public int Tx(int n) {
if(n == 0)
return 10;
else if (n == 1)
return 5;
else
return 2*(Tx(n-1) + Tx(n-2));
}
然后我们被要求计算 Tx(5) 的值。这就是我卡住的地方。如果 else 的 return 语句只是 n-1,我想我可以弄清楚,但是 n-1 + n-2 完全让我失望。
谁能解释一下这是如何工作的,或者分享一些有类似例子的链接。我曾尝试在网上和我的教科书中查找此内容,但我发现的示例要么太先进以至于我不知道发生了什么,要么它们只处理诸如 return n-1 之类的东西,我已经知道该怎么做.
【问题讨论】:
-
你试过用
n的小值在纸上画吗?然后更大? -
这就是我想要做的事情,但是返回语句的后半部分让我失望了。
-
为什么?如果
f(n) = 2*n,那么f(3) + f(4)是什么?