gpt4 book ai didi

Octave GNU : Undefined variable 'x' , 即使它被定义为函数输入

转载 作者:行者123 更新时间:2023-12-05 00:51:20 30 4
gpt4 key购买 nike

只是想写一个简单的程序来找到n个数字的gcd。我不知道如何解决这个错误,我已经阅读了所有的 Octave 函数文档并试图找到这样的问题……顺便说一句,刚开始用 Octave 编程。
这是代码:

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

错误:
error: 'x' undefined near line 6 column 6
error: called from
gcd at line 6 column 3

谢谢 :)

最佳答案

您的代码是一个函数定义。您的函数称为 gcd .

您必须将代码保存在一个名为 gcd.m 的文件中。然后创建一个新文件,以便您可以从中调用该函数。

在您保存的同一目录中 gcd.m ,创建一个文件(例如: gcdtest.m )并将以下代码放入其中:

test = gcd(40, 50)

然后保存并运行此文件。如果输出没有按预期工作,重新启动 Octave 应该可以修复它。

我选择的数字只是一个例子。

解释:

如果你只有函数定义文件(即 gcd.m ),当你点击“保存并运行”时,Octave 会自己调用你的函数,但它不够聪明,不会使用任何参数。这就是您收到“ undefined variable ”错误的原因。这类似于您只有 test = gcd()在您的测试文件中。

但是,如果您使用参数调用函数,它们将初始化变量 xy正确,您的代码将起作用。

您也可以直接调用 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反而。

  • 祝你学业好运。

    关于Octave GNU : Undefined variable 'x' , 即使它被定义为函数输入,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44508581/

    30 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com