Вы можете значительно упростить этот код. Я думаю, что другие уже упоминали то «что» здесь неверно. Но также обратите внимание на тот факт, что если что-то не является четным (делится на два), то оно должно быть нечетным. Это означает, что решение является дихотомическим (т.е. 0 или 1). Таким образом, вы можете упростить код до следующего. Обратите внимание, что мы также переместили печать после оператора if, поскольку мы всегда должны печатать результат. Дублировать код не нужно. Что касается серии, вам нужно будет использовать al oop. Вы можете посмотреть на выполнение рекурсивного l oop, но имейте в виду, что это бесконечная функция, и вам следует остановить ее, если вы не хотите попытаться увидеть бесконечность.
f=function(x) {
if(x%%2==0) {
x=x/2
} else {
x=3*x+1
}
return (x) # Ben Bolker made a good point that you will need to return X
}
f(1)
f(2)
f(7)