我在matlab中实现了二元eucledian算法,这里是代码
a=27;
b=36;
d=EuclidBinary(a,b)
d =
9
然后我输入了以下数据
a=36;
b=28;
d=EuclidBinary(a,b)
Out of memory. The likely cause is an infinite recursion within the program.
Error in EuclidBinary (line 16)
d=EuclidBinary(fix(abs(a-b)/2),b);
它工作正常,但是当我更改为以下数据时
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $apiHost);
curl_setopt($ch, CURLOPT_POST, count($apiData));
curl_setopt($ch, CURLOPT_POSTFIELDS, http_build_query($apiData));
curl_setopt($ch, CURLOPT_HTTPHEADER, array('Accept: application/json'));
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
$jsonData = curl_exec($ch);
curl_close($ch);
我已开始调试,如果我按照说明操作,那么我将
d = 2 * EuclidBinary(A / 2,B / 2);第一次打电话(a = 18,b = 14) 对于第二个相同 d = 2 * EuclidBinary(A / 2,B / 2); (A = 9,B = 7)
我们有第三种情况
a = 1 b = 7
并且通常程序重复这些值无限次,我使用下面的伪代码
请帮我解决这个问题
答案 0 :(得分:2)
此算法(来自邮件底部的打印屏幕)似乎有缺陷。让我们看看如果a = 1且b = 7:
会发生什么b
所以问题不在您的代码中,而是在您使用的算法中。它只是通过这个输入进入无限循环。
我认为错误发生在第4步。请参阅following link。
在您的问题中,步骤4在每种情况下都有path1
作为其第二个参数,而在我给出的链接中,第二个参数由某些条件决定。另请注意,有第5步。
答案 1 :(得分:1)
您的算法存在错误。见Binary GCD Algorithm。 a和b都是奇数的最后一种情况应该区别对待:
hdfs dfs -mkdir /home/`date +%Y%m%d`