任意数的matlab中阶乘,数组表示
function B=jiechen(A)
%将要计算的数的每一位数字依次放入一个一维数组
m=A;
len=fix(log10(A))+1;
for i=1:len
B(i)=mod(m,10);
m=fix(m/10);
end
%mod取余数,fix向零方向取整函数
%开始计算
for L=A-1:-1:1
B=B*L;
%逐步累积
length=size(B,2);%取相乘后的列数
%进位运算B数组中每一位分别乘L后,若值超过了10,则将其进位
for i=1:length-1
if B(i)>=10
B(i+1)=B(i+1)+fix(B(i)/10);
B(i)=mod(B(i),10);
end
end
%END为最终位,若B(end)超过了10,则依次将其mod后补充数据后长度,保证数组中的每个元素对应一个个位数,
while B(end)>=10
END=B(end);
B(end)=mod(B(end),10);
B=[B,fix(END/10)];
end
end
%反向输出数组元素
B=B(end:-1:1);
end
# 欢迎使用g=jiechen(100)%在此输入整数
function B=jiechen(A)
%将要计算的数的每一位数字依次放入一个一维数组
m=A;
len=fix(log10(A))+1;
for i=1:len
B(i)=mod(m,10);
m=fix(m/10);
end
%mod取余数,fix向零方向取整函数
%开始计算
for L=A-1:-1:1
B=B*L;
%逐步累积
length=size(B,2);%取相乘后的列数
%进位运算B数组中每一位分别乘L后,若值超过了10,则将其进位
for i=1:length-1
if B(i)>=10
B(i+1)=B(i+1)+fix(B(i)/10);
B(i)=mod(B(i),10);
end
end
%END为最终位,若B(end)超过了10,则依次将其mod后补充数据后长度,保证数组中的每个元素对应一个个位数,
while B(end)>=10
END=B(end);
B(end)=mod(B(end),10);
B=[B,fix(END/10)];
end
end
%反向输出数组元素
B=B(end:-1:1);
end