你好,我有一個幻燈片的例子,我似乎不明白爲什麼函數中的while循環只發生一次。我解釋它的方式是它會永遠持續下去,但顯然它不會。爲什麼這個函數的while循環無限運行?
#include <stdio.h>
int main()
{
int a = 481;
int b = 910;
int result = 0;
result = gcd(a, b);
printf("%d\n", result);
return 0;
}
int gcd(int a, int b)
{
while(b!=0) // HERE IS MY PROBLEM!, Wouldn't this while loop go on forever?
{
int tmp = b;
b = a% b;
a = tmp; // how could 'a' be 13 if tmp is 0, at beginning they do tmp = b(0)
}
return a;
}
我只是不明白它...它說,雖然B不等於0,和我們的B是910,所以它永遠不會是0,這意味着while循環永遠不會結束,現在做它?同樣在函數tmp = b中,它是0然後它們修改b,但是即使它們修改b溫度仍然爲0,因爲在修改之前b原本是0 ..這裏是內嵌..
編輯: 我犯了錯誤,說tmp = b將始終爲0,從內部函數看b的值,並忘記b從外部910。
如果你調試它,這是非常容易理解的。我只是沒有得到的是爲什麼你不會調試。在循環內添加一些'printf'語句。您還應該啓用警告並處理它們。 – 2014-10-05 21:04:39
我會嘗試這種信息。 – Belphegor 2014-10-05 21:05:29
@DavidHeffernan說了些什麼,或者只是在調試器中遍歷循環幾次以查看真正發生了什麼? – 2014-10-05 21:05:35