Я только начинаю использовать Rcpp
, так что извините, если я пропустил простой шаг или что-то подобное... Я пробовал это с ?sourceCpp
library(Rcpp)
sourceCpp(code='
#include <Rcpp.h>
// [[Rcpp::export]]
int fibonacci(const int x) {
if (x == 0) return(0);
if (x == 1) return(1);
return (fibonacci(x - 1)) + fibonacci(x - 2);
}'
)
До fibonacci(46)
все нормально, но потом получаю:
> fibonacci(47)
[1] -1323752223
> fibonacci(48)
[1] 512559680
> fibonacci(49)
[1] -811192543
> fibonacci(50)
[1] -298632863
Согласно этой странице вышеизложенное должно быть:
47 : 2971215073
48 : 4807526976
49 : 7778742049
50 : 12586269025
Вы получаете тот же результат?
?sourceCpp
. Несмотря на то, что я, вероятно, мог бы выполнить функцию Фибоначчи самостоятельно, я не очень хорошо разбираюсь в C :-( - person Michele   schedule 18.09.2013#include
, который добавляется (вместе с другими каркасами)sourceCpp()
. - person Dirk Eddelbuettel   schedule 18.09.2013?
- person Simon O'Hanlon   schedule 18.09.2013sourceCpp()
, что необычно. Я бы определил функцию Фибоначчи в одной длинной строке черезcppFunction()
. - person Dirk Eddelbuettel   schedule 18.09.2013cppFunction('double fib(double x) { if (x<2) return x; else return fib(x-1)+fib(x-2); }')
- person Dirk Eddelbuettel   schedule 18.09.2013Rcpp
твой, верно? Но вы говорите, что я бы определил Фибоначчи ... как будто вы имеете в виду другое, поэтому я думаю, что кто-то другой написал R Doc дляRcpp
- person Michele   schedule 18.09.2013