Run octave script file containing a function definition

前端 未结 2 1813
别跟我提以往
别跟我提以往 2021-01-14 09:54

I\'ve a very newbie octave question.
Running this code in octave console is working fine:

function fibo = recfibo(n)
  if ( n < 2 )
    fibo = n;
  el         


        
2条回答
  •  一向
    一向 (楼主)
    2021-01-14 10:09

    Add 1; as the first line of the file:

    1;
    
    function fibo = recfibo(n)
      if ( n < 2 )
        fibo = n;
      else
        fibo = recfibo(n-1) + recfibo(n-2);
      endif
    endfunction
    
    disp(recfibo(5))
    

    Any M-file that starts with a function definition is a function M-file, not a script M-file. By adding a meaningless statement to the top, you turn it into a script.


    In MATLAB (since fairly recently), a script M-file can define functions at the end of the script. There you'd put the disp line at the top of the file, and have the function block at the end, without any script lines after it. However, Octave requires functions to be defined before you use them, hence it has to come before the script line that uses the function. Octave allowed the definition of functions within a script file before MATLAB introduced that feature, hence their implementation is not compatible with that of MATLAB.

提交回复
热议问题