侵删,新人上路虽简单大佬勿喷
开始是这样的,同学matlab考试,叫我帮忙做题,其中一道就是这样,与标题不同的是题目需要用函数m文件一次性输入数组的结果;如此图
for为主体的代码他自己做了,那我就只做了while的,我觉得归根结底都一样,思想表达出来都一样。
完整代码如下,上传不了m文件,你们可以自行复制创建m文件。(PS:调代码块我也不懂,选项没有matlab啊)
function kans=KANS2(d)
i=ones(1,length(d));
K=zeros(1,length(d));j=1;
while j<=length(i)
while i(j)<=d(j)
K(j)=K(j)+factorial(i(j));
i(j)=i(j)+1;
end
j=j+1;
end
kans=K;
明显能看出来,核心就是把两个数组慢慢引用单元素一次次的内循环完成对数组中该指定元素的求阶乘和。
操作演示
用法就是matlab打开对应文件所在路径,命令行输入
KANS2(X),就能得出对应结果
X可以是数或数组
例子:
KANS2([1,2,3,4,5,6,7,8])
ans =
列 1 至 5
1 3 9 33 153
列 6 至 8
873 5913 46233
缺点也很显然但都小细节,很容易添加,比如元素的±小数筛选报错,以及大范围批量运算需增加点循环条件什么的,也都易处理。
数组直接输入引用是matlab一大特色(应该),整体运算特别便捷,这里代码自然可能不够精简也有冗余,时间问题不便及时更正,欢迎指出谢谢!