求解答matlab问题输入一个正整数n,n作为初始数据,反复计算,知道1 为止如果n为偶数,则这一位上为n/2如果n为奇数,则这一位上为3*n+1例如 :n =17,生成一个数列52→26→13→40→20→10→5→16→8→4→
来源:学生作业帮助网 编辑:六六作业网 时间:2024/12/20 06:11:25
求解答matlab问题输入一个正整数n,n作为初始数据,反复计算,知道1为止如果n为偶数,则这一位上为n/2如果n为奇数,则这一位上为3*n+1例如:n=17,生成一个数列52→26→13→40→20
求解答matlab问题输入一个正整数n,n作为初始数据,反复计算,知道1 为止如果n为偶数,则这一位上为n/2如果n为奇数,则这一位上为3*n+1例如 :n =17,生成一个数列52→26→13→40→20→10→5→16→8→4→
求解答matlab问题
输入一个正整数n,n作为初始数据,反复计算,知道1 为止
如果n为偶数,则这一位上为n/2
如果n为奇数,则这一位上为3*n+1
例如 :n =17,生成一个数列
52→26→13→40→20→10→5→16→8→4→2→1
考虑所有第一个数小于等于n的数列
1.求不同初始值,生成数组的长度
2.最大数组长度和他对应的初始值
3.出现频率最高的数组长度和次数
4.长度是18的数列的个数
N的区间设置成11248-11348
求解答matlab问题输入一个正整数n,n作为初始数据,反复计算,知道1 为止如果n为偶数,则这一位上为n/2如果n为奇数,则这一位上为3*n+1例如 :n =17,生成一个数列52→26→13→40→20→10→5→16→8→4→
参考代码
可使用我之前在另一个问题计算单个n对应数列长度的函数len_series来处理:
N = 11248:11348;L = N*0;
for i=1:length(N)
n=N(i);
L(i) = len_series(n);
end
% 1.求不同初始值,生成数组的长度
clf
plot(N,L,'.-')
xlim([min(N) max(N)])
xlabel('初始值');
ylabel('数组长度');
% 2.最大数组长度和他对应的初始值
[Lmax,inx] = max(L)
Nmax = N(inx);
hold on
plot(Nmax,Lmax,'rp')
text(Nmax,Lmax,sprintf('(%i,%i)',Nmax,Lmax))
disp(N(L==Lmax))
% 3.出现频率最高的数组长度和次数
V=unique(L);
F=arrayfun(@(v)sum(L==v),V);
figure
bar(V,F)
[Fmax,inx] = max(F);
disp([V(inx) Fmax])
xlabel('数组长度');
ylabel('出现次数');
% 4.长度是18的数列的个数
L18 = sum(L==18)
结果及说明
1、不同初始值对应的生成数组长度如图所示
2、最大数组长度为206,对应的初始值有5个,分别是:11263,11273,11289,11346,11347
3、出现频率最高的数组长度是87,共出现24次.各种长度的出现次数如图:
4、不存在长度是18的数列.在此区间内,数列长度最小为25.
附:函数len_series代码(稍有改动)
function len = len_series(n)A = n;
while abs(n-1) > eps
if ~rem(n,2)
n = n/2;
else
n = n*3+1;
end
A(end+1) = n;
end
fprintf('%i → ',A(1:end-1));
fprintf('%i\n',A(end));
len = length(A);
求解答matlab问题输入一个正整数n,n作为初始数据,反复计算,知道1 为止如果n为偶数,则这一位上为n/2如果n为奇数,则这一位上为3*n+1例如 :n =17,生成一个数列52→26→13→40→20→10→5→16→8→4→
求Free Pascal程序问题如下:第一行输入一个正整数n(1
输入一个正整数n(n
输入一个正整数n(1 输入一个正整数n(1
输入一个正整数n(1
输入一个正整数n(1
输入一个正整数 n (1
输入一个正整数n(1
输入一个正整数n(1
输入一个正整数 n (1
输入一个正整数n (1
求阶乘问题.要求定义函数fact(n)计算n!,主函数中输入一个正整数n,输出n!要求函数fact(n)分别采用递归…求阶乘问题.要求定义函数fact(n)计算n!,主函数中输入一个正整数n,输出n!,要求函数fact(n)分
还有这样一个问题:输入2个正整数m和n(m>=1,n
还有这样一个问题:输入2个正整数m和n(m>=1,n
还有这样一个问题:输入2个正整数m和n(m>=1,n
输入两个正整数m,n,编写求阶乘的函数,计算m!/(n!*(m-n)!). C语言函数解答,谢谢.
C语言.输入一个正整数n(1
编写程序,输入一个正整数n(1