Алгоритм Scilab - рекурсия - PullRequest
       36

Алгоритм Scilab - рекурсия

0 голосов
/ 30 января 2020

У меня есть код, написанный на Scilab:

function v=myhorner2(a,x)
    N=length(a)
    v=a(1)
    for i=2:N do
        v=v*x+a(i))
    end
endfunction

, который работает хорошо. Теперь мне нужно выполнить рекурсию с тем же кодом, но кажется, что он не работает - в чем ошибка?

function myhorner2(a,x)
    if i=2:N then
         myhorner2(a,x)
         disp (i=2:i+1)
         myhorner2(a+1,x)
    else 
        disp ([v=a])
    end
endfunction

Я новичок. Спасибо за ваш отзыв

1 Ответ

1 голос
/ 02 февраля 2020

Исходя из вашего исходного последовательного кода, я предполагаю, что коэффициент сохраняется в векторе a в порядке убывания. Следовательно, рекурсивная версия алгоритма Хорнера должна быть

function v = rechorn(a,x)
    N = length(a)
    if N == 1 then
        v = a;
    else
        v = x*rechorn(a(1:N-1),x)+a(N)
    end
endfunction
...