Я смотрел видео по гипотезе 3n + 1 и просто хотел попробовать и посмотреть, смогу ли я создать простую программу для тиражирования нескольких ее циклов.Попытка комбинировать цикл For и If
Что я хотел бы сделать, так это сделать так, чтобы программа принимала номер ввода, решает, является ли это нечетным или четным. Если даже разделите его на 2, а затем используйте это число, чтобы продолжить цикл. Или, если значение нечетное, умножьте его на 3 и добавьте 1, а затем продолжите цикл.
i.e, если число было 7, это странно, так что перейдите к 22, это даже так идти до 11, это странно, так что до 34, это даже так идти до 17 и так далее.
Вот моя попытка, я просто хотел попробовать это для удовольствия и не получил никуда. Я надеюсь, что это просто что-то маленькое, что я должен делать с кодом, если не могу его оставить.
#Want to do 10 loops of n
#If n is even /2
#if n is odd n*3 +1
n = input("enter first value for n")
for i = (n:10);
disp(i)
if mod(i, 2) == 0
% i is even
ans = sprintf("%d", i ," is even")
newn = (i/2)
disp(ans)
else
% i is odd
ans = sprintf("%d", i ," is odd")
disp(ans)
newn = (3*n +1)
end
end
EDIT:
Я имел проблемы с кодом, ответившие так вот обновленный код, который я получил помощь с этим, кажется, работает хорошо. Я не знаю, почему sprintf работал не слишком хорошо.
n = input("enter first value for n")
for i = 1:10
if mod(n, 2) == 0
% n is even
n = n/2
else
% n is odd
n = 3*n +1
end
end
Что ваш вопрос? – excaza
Вы смешиваете между 'i' и' n', и не нужны для 'newn' – EBH