【问题标题】:Scilab algorithm - recursionScilab 算法 - 递归
【发布时间】:2020-02-03 04:03:50
【问题描述】:

我有一个用 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

我是初学者。感谢您的反馈

【问题讨论】:

  • 这些函数应该做什么?你能解释一下吗?

标签: scilab


【解决方案1】:

根据您的原始顺序代码,我假设系数按递减顺序存储在向量 a 中。因此,Horner 算法的递归版本应该是

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

【讨论】:

    猜你喜欢
    • 2013-02-14
    • 1970-01-01
    • 2015-04-23
    • 1970-01-01
    • 2019-09-03
    • 1970-01-01
    • 1970-01-01
    • 2014-08-29
    相关资源
    最近更新 更多