How can I calculate results from a function with two inputs using two arrays?
3 ビュー (過去 30 日間)
古いコメントを表示
I have written a two-argument ackerman function as below. The code works and returns correct values if I specify the values or a variable (with a set value for the command line).
I need to test the function for all combinations of the arrays m=0:1:4 and n=0:1:3 (24 combinations). I can input an array using a for loop for m whilst setting n to 0 and this works fine and returns 6 answers for the cases (0,0) (1,0) (2,0) (3,0) (4,0) (5,0) (6,0). When I add the second array I only get 17 values rather than the 24 combinations.
How can I write this code so that it returns a list of all combinations (24)?
My command line input was below:
n=0:1:3;m=0:1:4;
for a=m
for b=n
res=ack(a,b)
end
end
function res=ack(m,n)
if m==0
res = n+1;
elseif m>0 && n==0
res = ack(m-1,1);
elseif m>0 && n>0
res = ack(m-1,ack(m,n-1));
end
0 件のコメント
採用された回答
Mark McBroom
2018 年 2 月 25 日
code looks correct. Does your code actually complete? Or is it simply taking a very long time to complete the 18th combination? Your function has very deep recursion and could therefore take a long time to compute whenever n > 0.
その他の回答 (1 件)
Jan
2018 年 2 月 25 日
編集済み: Jan
2018 年 2 月 25 日
Something goes wrong.
I need to test the function for all combinations of the arrays m=0:1:4 and n=0:1:3
(24 combinations).
m has 5 elements, n has 4 elements, such that you get 20 combinations, not 24.
6 answers for the cases (0,0) (1,0) (2,0) (3,0) (4,0) (5,0) (6,0).
No, there is no 6. m goes from 0 to 4.
When I add the second array I only get 17 values rather than the 24 combinations.
Do you mean inputs or outputs?
As Mark M has said already: The function takes a long time for the input [4,1]. Currently it is still running on my computer...
[EDITED] ... still running - the values grow and grow
[EDITED 2] ... still running. I give up. Do you have an evidence, that the computations ends?
参考
カテゴリ
Help Center および File Exchange で Loops and Conditional Statements についてさらに検索
製品
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!