Fibonacci序列求解方程

时间:2015-02-19 01:38:00

标签: recursion fibonacci

我想弄清楚一个方程式。这是f(n)= f(n-1)+ 3n ^ 2-n。我也有值用作f(1),f(2),f(3)。我将如何解决这个问题?

2 个答案:

答案 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

注意:您正在寻找的是称为保留曲目的方法。它可以用来解决你的问题(封闭的公式非常简单)。