我在R中创建了这个简单的代码来解决带有递归功能的Knapsack程序
n <- c(0,1,2,3,4)
v <- c(10,40,30,50)
w <- c(5,4,6,3)
k <- 10
myfunction <- function(n,k){
if (n==0 | k==0){
output <- 0
} else if (w[i] > k) {
output <- myfunction[i-1,w]
} else {
output <- max(v[i]+ myfunction(i-1, k-w[i]),myfunction(i-1,k))
}
return(myfunction)
}
Run Code Online (Sandbox Code Playgroud)
但是,我没有得到一个值作为输出,而是整个函数.例如,如果我输入:myfunction(4,10)
我没有得到90的值,但整个功能输出.
这些是价值观