0
我想使用遞歸函數來確定網格中值的最大可能組合。我的一個功能是作用很奇怪的是,給我的錯誤:奇怪的錯誤 - 對象轉爲零
warning: could not load any Objective-C class information. This will significantly reduce the quality of type information available.
我的函數代碼如下:
-(int)pattern4XBottomAtTile:(Tile *)t1 TileTwo: (Tile *) t2{
//base case
if(t1.x == t2.x && t1.y == t2.y){
return t2.value;
}
//move 1
if((t1.y < 4) && (t1.y == t2.y) && (abs(t2.x-t1.x) == 2)){
return t1.value + [self pattern4XBottomAtTile:t1.bottom TileTwo:t2];
}
//move 2
if((t1.x-t2.x == 2)&&(t1.y - t2.y > 0)){
return t1.value + [self pattern4XBottomAtTile:t1.left TileTwo:t2];
}
if((t1.x-t2.x == -2)&&(t1.y - t2.y > 0)){
return t1.value + [self pattern4XBottomAtTile:t1.right TileTwo:t2];
}
//move 3
if((abs(t2.y-t1.y) == 1)&&(abs(t2.x-t1.x) == 1)){
return t1.value + [self pattern4XBottomAtTile:t1.top TileTwo:t2];
}
//move 4
if((t1.y == t2.y)&&(t1.x-t2.x == 1)){
return t1.value + [self pattern4XBottomAtTile:t1.left TileTwo:t2];
}
if((t1.y == t2.y)&&(t1.x-t2.x == -1)){
return t1.value + [self pattern4XBottomAtTile:t1.right TileTwo:t2];
}
return 0;
}
,我迄今爲止發現的問題,通過使用多個斷點,是對象正在傳遞給函數,並在零時刻後。
在方法的開始斷點顯示:
t2和t1的值都是以#4開始,nil在#5開始變爲零。 直到大約40264時,值纔再次發生變化,其中t1更改爲平鋪的地址,然後再次更改爲40265.
我對我的問題所在的位置感到非常困惑。我的遞歸代碼是從我的朋友提供的可用的java函數轉換而來的,所以我對這一切都有點失落。任何幫助將不勝感激。
100%stackoverflow :) 39704項目在堆棧中! –
在我的函數週圍放置「if(t1!= nil && t2!= nil){}」,錯誤消失。現在我必須弄清楚發生了什麼事情!謝謝 – ecatalano