【问题标题】:Fibonacci Memoization in RR中的斐波那契记忆
【发布时间】:2015-10-19 10:21:50
【问题描述】:

我正在尝试使用 R 中的递归记忆来实现斐波那契数列。 我对 R 有基本的想法并尝试使用它们来实现。

这是我尝试过的代码(不工作)。

    rm(list = ls())   ##Clearing Environment
    ##Fibonacci_using Recursion
    fibvals <<- numeric(3)
    fibvals[1:length(fibvals)] <- NA
    fib_recursive <- function(n){
        if(is.na(fibvals[n])){ 
            if (n == 1) {
                fibvals[n] <- 0
                return(0)
            } 
            if (n == 2){
                fibvals[1] <- 0
                fibvals[n] <- 1
                return(1)
            } 
        fibvals[n] <- (fib_recursive(n - 1) + fib_recursive(n - 2)) 
        }
        return(fibvals)
    }
    fib_recursive(5)

您能否提出更正和改进的建议。 谢谢。

【问题讨论】:

标签: r fibonacci memoization


【解决方案1】:

递归变体,但没有记忆将是这样的:

int fibonnaci(int n) {
    if(n == 1 || n == 2)
       return 1;
    return fibonnaci(n-1) + fibonnaci(n-2);
}

显然,此代码经常重新进行相同的计算。您必须将值存储在数组中,代码看起来像这样

int fibonnaci(int n) {
    if(a[n]==0)
       a[n]=fibonnaci(n-1) + fibonnaci(n-2);
    return a[n];
}

另外,不要忘记a[MAXN] = {1, 1} 字符串的前两个元素。

【讨论】:

  • 这是 R 代码吗?
猜你喜欢
  • 2019-06-04
  • 2011-12-14
  • 2015-06-16
  • 2021-11-17
  • 2018-11-09
  • 1970-01-01
  • 1970-01-01
  • 2021-05-21
  • 1970-01-01
相关资源
最近更新 更多