I nee to change this str2double code while keeping the same output for my collatz function.
显示 更早的评论
The following is the script to my function:
function [steps,maxnum]=collatz(num)
str=input('Enter an integer greater than 1:','s');
num=str2double(str);
cnt=0;
maxnum=num;
while num>1
cnt=cnt+1;
if mod(num,2);
num=num*3+1;
else
num=num/2;
end
if num>maxnum; maxnum=num;
end
end
s=cnt
maxnum
I was told that I cannot use the str2double(str) function but I cannot figure out how to get the same output any other way. My script is supposed to take a number greater than 1 and apply a while loop by multiplying the integer by 3 then adding 1 if it is odd or dividing it by 2 if it is an even number until the function equals 1, where the loop ends. I need a different method for finding the steps it takes for the loop to end. For example if the user enters "3" the steps would be 3 → 10 → 5 → 16 → 8 → 4 → 2 → 1. I would need the output to be s=7 %meaning it took 7 steps to complete the loop m=16 %representing the maximum number reached during the loop
3 个评论
KSSV
2017-9-25
That's fine...what problem with the code?
Stephen23
2017-9-25
@KSSV: there is nothing wrong with the code. The problem is the ill-informed tutor.
Kevin Smith
2017-9-25
编辑:Kevin Smith
2017-9-25
采纳的回答
更多回答(1 个)
Walter Roberson
2017-9-25
1 个投票
Why are you prompting for a value instead of passing the value on the command line, since you do have num as a parameter for your function?
类别
在 帮助中心 和 File Exchange 中查找有关 Matrix Indexing 的更多信息
产品
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!