所以我试图编写一些非常基本的代码来基本上创建一个基于一定规则的随机数组。我的最终目标是尝试获得一组数字,其中没有一个匹配。但是,我的代码输出的结束数组看起来像数字匹配,我似乎无法弄清楚为什么。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