我正在C計算機編程類,我試圖實現一個算法用於騎士的旅遊問題。我意識到C沒有布爾值,除非你自己設計它們,或者把'0'和'1'設爲真和假,並且與它們一致。我決定使用後者,並編譯它,但它說:「過程返回26866464 < 0x28FE00>」我從互聯網上提供的僞代碼編寫這個程序,我理解騎士的旅遊和這個代碼的想法,但我不能真正指出錯誤究竟是什麼。我覺得印刷它的方式有點不對勁。處理返回26866464 <0x28FE00>錯誤
#include <stdio.h>
#include <stdbool.h>
#define N 5
bool algorithmMove(int x, int y, int m)
{
bool visited[N][N];
visited[N][N] == false;
if (x < 0 || x >= N || y < 0 || y >= N)
{
return false;
}
if (visited[x][y] == true)
{
return false;
}
if (m = (N*N) - 1)
{
printf("A solution has been found");
printf("x, y");
visited[x][y] == true;
return true;
}
else
{
bool result;
result = false;
result = result || algorithmMove(x+2, y+1, m+1);
result = result || algorithmMove(x+2, y-1, m+1);
result = result || algorithmMove(x-2, y+1, m+1);
result = result || algorithmMove(x-2, y-1, m+1);
result = result || algorithmMove(x+1, y+2, m+1);
result = result || algorithmMove(x+1, y-2, m+1);
result = result || algorithmMove(x-1, y+2, m+1);
result = result || algorithmMove(x-1, y-2, m+1);
if (result = true)
{
printf("x, y");
return true;
}
else
{
visited[x][y] == false;
return false;
}
}
}
main()
{
algorithmMove(2, 4, 0);
}
沒有,對不起,我會確保到編輯,我有一個問題,但意識到了這個問題並修復了它,並且stackoverflow保存了你以前寫的東西,我的錯誤 – DsDude 2015-01-21 08:40:06
你應該聲明你的程序入口點爲'int main(void)'並且把'return 0;'作爲最後一條語句。另外,在C'='中是賦值,並且將左側的th變量的值設置爲右側的項目的值,而'=='是對相等性的測試。數組也被索引從0到N-1(而不是1到N)。 – 2015-01-21 08:46:54
如果你在'main'函數中刪除或註釋掉這行(如果以'//開頭'或者在''之前放'''*''''''''''''''')會發生什麼?該過程是否仍然返回一個非零值? – 2015-01-21 08:58:56