我想弄清楚一个方程式。这是f(n)= f(n-1)+ 3n ^ 2-n。我也有值用作f(1),f(2),f(3)。我将如何解决这个问题?
答案 0 :(得分:1)
你通常会使用递归但是,无论你是还是迭代解决方案,你都缺少(或者只是没有向我们展示)一个重要的信息,终止条件,如f(1) = 1
(例如)。
通过这些额外的信息,您可以相对轻松地编写递归解决方案,例如以下伪代码:
define f(n):
if n == 1:
return 1
return f(n-1) + (3 * n * n) - n
顺便说一句,那不是实际上 Fibonacci,它是特定的 1, 1, 2, 3, 5, 8, 13, ...
序列。
可以说它与Fibonacci一样,但实际上更有效的是递归执行此操作,因为它只涉及每个级别的一个自引用调用,而Fibonacci需要两个:
define f(n):
if n <= 2:
return 1
return f(n-2) + f(n-1)
如果你是那些不喜欢递归的偏执型人之一(而且我会自由地承认可以在有限堆叠深度的现实世界中遇到问题),你可以选择迭代版本。
define f(n):
if n == 1:
return 1
parent = 1
for num = 2 to n inclusive:
result = parent + (3 * num * num) - num
parent = result
return result
答案 1 :(得分:0)
如果你在Stack Overflow等编程网站上提出这个问题,你可以期待代码作为答案。
另一方面,如果您正在寻找f(n)
的封闭公式,那么您应该将问题转到专门的StackExchange网站,例如Computer Science。
注意:您正在寻找的是称为保留曲目的方法。它可以用来解决你的问题(封闭的公式非常简单)。