matlab 生成数组输入一个正整数n,n作为初始数据,反复计算,知道1 为止如果n为偶数,则这一位上为n/2如果n为奇数,则这一位上为3*n+1例如 :n =17,生成一个数列52→26→13→40→20→10→5→16→8→4→2

来源:学生作业帮助网 编辑:六六作业网 时间:2024/11/17 19:03:39
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→2
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
写一个function 让这个function返回这个数列的长度,数列必须停止在1.

matlab 生成数组输入一个正整数n,n作为初始数据,反复计算,知道1 为止如果n为偶数,则这一位上为n/2如果n为奇数,则这一位上为3*n+1例如 :n =17,生成一个数列52→26→13→40→20→10→5→16→8→4→2

编写函数:

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));
fprintf('→%i',A(2:end));
len = length(A);

调用

>> len_series(17) 
17→52→26→13→40→20→10→5→16→8→4→2→1
ans =
    13