Author: Manba Cople
专业:IOT
说明:记录和输出学习内容
问题
任何一个大于1的整数,如果是偶数,将其除以2;如果是奇数,将其乘以3再加1,反复运算。试问:有使这个过程不中止的正整数么?编程验证。
算法流程图
代码
close all;
clear;clc;
fprintf('请输入大于1的整数:\n');
n = input('n=');
flag = 0; % 记录循环次数
while (n > 1) && (n == floor(n)) % 判断n值是否为大于1的整数
if mod(n,2) == 0
n = n/2;
else
n = n*3+1;
end
flag = flag+1;
end
if flag == 0
error('n值为非大于1的整数!');
else
fprintf('循环%g次\n',flag);
end