只是想写一个简单的程序来找到n个数字的gcd.我不知道如何解决这个错误,我已经阅读了所有的八度功能文档,并试图找到这样的问题...刚刚开始编程Octave btw.这是代码:
function divisor = gcd(x, y)
q=0;
r=0;
l=0;
h=0;
if(x>y)
h=x;
l=y;
elseif(x<y)
h=y;
l=x;
else
h=y;
l=x;
endif
while(r != 0)
q=floor(h/l);
r = h-l*q;
q=h;
r=l;
endwhile
divisor = q;
printf("%d", q);
return;
endfunction
Run Code Online (Sandbox Code Playgroud)
错误:
error: 'x' undefined near line 6 column 6
error: called from
gcd at line 6 column 3
Run Code Online (Sandbox Code Playgroud)
谢谢 :)
您的代码是函数定义.你的函数被调用gcd.
您必须将代码保存在调用的文件中gcd.m,然后创建一个新文件,以便可以从中调用该函数.
在您保存的同一目录中gcd.m,创建一个文件(例如:) ,gcdtest.m并在其中放入以下代码:
test = gcd(40, 50)
Run Code Online (Sandbox Code Playgroud)
然后保存并运行此文件.如果输出不能按预期工作,重新启动Octave应该修复它.
我选择的数字只是一个例子.
说明:
如果您拥有的只是函数定义文件(即gcd.m),当您点击"保存并运行"时,Octave本身会调用您的函数,但它不够聪明,并且不会使用任何参数.这就是为什么你得到一个"未定义的变量"错误.这与您只test = gcd()在测试文件中的类似.
但是,如果使用参数调用函数,它们将正确初始化变量x,y并且您的代码将起作用.
您也可以gcd(40, 50)从Octave命令行调用,以进行测试.
以下是关于功能和功能文件的Octave文档的链接(我知道你说你读过它们,但新手可能没有):
https://www.gnu.org/software/octave/doc/interpreter/Defining-Functions.html
https://www.gnu.org/software/octave/doc/interpreter/Function-Files.html
现在,我注意到您的代码中存在一些问题:
while(r != 0)在第16行 - 这将不会运行,甚至不会运行一次,因为您r在第3行中定义为0并且稍后不为其分配新值.
elseif(x<y)(第9行)和else(第12行)都完全相同.最好elseif完全删除条件,而只是else取而代之.
祝你学习顺利.
| 归档时间: |
|
| 查看次数: |
5546 次 |
| 最近记录: |