我的R中的cxx函数有问题。我想自己调用它,不幸的是,编译器给了我这个错误信息:
' Matmult2'未在此范围内声明
问题还在于在cxx函数中调用AppId
。
我原来的问题与strassen算法有关,我想用RCPP / Inline递归调用。 非常感谢你的帮助!
`
Matmult2
&#39)
`
答案 0 :(得分:1)
你不能做直接递归,因为我们插入的粘合代码会创建一个被称为的包装函数---但你不希望递归地调用包装器,你希望你的函数能够叫做。所以你也需要:一个从R调用的包装器和一个C(++) - 只有递归函数 从你的包装器调用,并调用它自己。
如果切换到Rcpp属性,它也可以。在这里,我们使用递归函数的标准承载,Fibonacci序列:
settings_data.json
(我使用R> library(Rcpp)
R> cppFunction("double fib(double n) { if (n < 2) return n; return(fib(n-1) + fib(n-2)); }")
R> sapply(0:10, fib)
[1] 0 1 1 2 3 5 8 13 21 34 55
R>
代替double
,因为后者溢出了。)