2016-07-11 2 views
0

У меня есть эта функция f(n) = 5*f(n - 1) - n^2 где n> 2. Я знаю это f(0) = 1. Я пытаюсь вычислить значение F (10) и написал это в RR функция, ошибка

myf <- function(n) 5*f(n - 1) - n^2 

Теперь, если я пишу myf(10) я получаю сообщение об ошибке:

Ошибки в MYF (10): не может найти функцию «F»

Я понимаю, что R считает, что f является второй переменной, хотя есть только один (n). Как мне изменить myf, чтобы R знать, что существует только одна переменная, и она должна автоматически вычислять f(n - 1)?

+0

Вопросы о том, как код в R не по теме здесь. Это будет по теме [SO]. Если вы подождете, мы перенесем его туда. – gung

+0

okay thanks ..... –

+0

'f (n) = 5 * f (n - 1) -^2 Кажется, что-то не хватает -' n' я полагаю. Искажение «рекурсии» может помочь. – Scortchi

ответ

4

Я думаю, что вы ищете рекурсивную функцию, где функция дозвонилась в теле должны иметь такое же имя, как и сама функция, как заметил @nrussell:

f <- function(n) if(n == 0) 1 else 5*f(n - 1) - n^2 
f(10) 
# [1] 5188020 

Вы также можете использовать функцию Recall в определении f, что делает уверен, что если f переименован, новое имя будет вызываться в:

f <- function(n) if(n == 0) 1 else 5 * Recall(n - 1) - n^2