所以我試圖編寫一些非常基本的代碼來基本上創建一個基於一定規則的隨機數組。我的最終目標是嘗試獲得一組數字,其中沒有一個匹配。但是,我的代碼輸出的結束數組看起來像數字匹配,我似乎無法弄清楚爲什麼。Matlab遞歸不按照原樣工作
我已經在下面粘貼了一個示例輸出,正如您所看到的,「總計」數組中的一些數字匹配。我猜測我寫了遞歸'addboard'函數的方式有問題,但我不知道什麼是錯的。如果有人能提供一些建議,那會很棒。謝謝。
function [Components,Totals] = BoardForm1()
BoardLengths = [4,6,8,10,12];
Initial = [0,1,2,3,4,5,6,7];
Components = zeros(8,14);
Totals = zeros(8,14);
for i=1:14
for row = 1:length(Initial)
[currentboard,test] = addboard(row,BoardLengths,Initial,Totals);
Initial(row) = test;
Components(row,i) = currentboard
Totals(row,i) = test
end
end
end
function [currentboard,test] = addboard(x,BoardLengths,Initial,Totals)
currentboard = BoardLengths(randi(length(BoardLengths)));
test = Initial(x) + currentboard;
if ismember(test,Totals)
addboard(x,BoardLengths,Initial,Totals);
end
end
Totals =
12 16 28 34 44 56 68 76 84 94 106 114 118 128
13 25 35 39 43 49 53 61 65 75 83 91 95 103
6 18 22 34 42 50 54 66 72 82 86 92 104 112
15 23 35 41 51 57 63 69 73 81 87 99 105 111
14 26 36 48 58 68 80 90 100 104 108 114 120 130
9 13 23 27 31 37 43 49 55 61 65 75 87 91
12 24 34 42 46 54 60 64 72 76 82 88 92 96
19 29 33 39 47 57 69 77 83 89 101 109 119 125
嗯,這是有道理的 - 看起來像它的工作!不幸的是,它現在看起來像是達到了500的遞歸限制。 – Alvin
看來你的算法被一個不可能的選擇卡住了,因爲所有選項已經存在於總計中,但是從你的代碼我無法理解你是什麼樣的分配試圖執行。 – Daniel