我定义了一个名为CARE_SAV的函数,它包含一个递归过程,代码是
Class.forName("com.mysql.jdbc.Driver");
Connection conn = null;
conn = DriverManager.getConnection("jdbc:mysql://hostname:port/dbname","username", "password");
//Create statement
//Execute statement
//Iterate over results
//close statement
conn.close(); // close connection
该功能本身运行完美。但是,当我定义另一个函数(ALS)并调用此CARE_SAV时,错误会一直弹出,表示局部变量可能已更改为匹配局部变量值。因此,ALS第6行出现错误.ALS代码如下所示
function [miu_tau_c,miu_tau] = CARE_SAV(beta,Yt,t,miu_1)
global miu_tau
global t
global miu_1
if t > 1
miu_tau_c = beta(1)+beta(2) * ...
[CARE_SAV(beta, Yt, t-1, miu_1)]+beta(3)*abs(Yt(t-1));
miu_tau = [miu_tau;miu_tau_c];
else
miu_tau_c = miu_1;
miu_tau = [miu_tau;miu_tau_c];
end
有人可以向我解释我在这里发生了什么吗?非常感谢。
答案 0 :(得分:0)
在CARE_SAV中,您有:
miu_tau_c = miu_1;
- 将miu_1作为全局变量。
然后,在另一个功能中,您有as input miu_1 AGAIN
,并且您呼叫global miu_1 AGAIN
。这是问题所在。
尝试从第二个功能中的输入中删除miu_1。它可能有用,但在这样的函数中使用全局变量,不建议这样做。