循环语句(续)
while循环-示例3-最大公约数计算
最大公约数原理:
两数相除得到余数(不论是大数除以小数还是反之),此后一直用除数除以余数,直到余数为0,最后一个式子的除数即为最大公约数.
(如表:小数除以大数则多出来第一行,并不影响结果)
数1(a) | 数2 (b) | 商 | 余数( r ) |
---|---|---|---|
196 | 371 | 0 | 196 |
371 | 196 | 1 | 175 |
196 | 175 | 1 | 21 |
175 | 21 | 8 | 7 |
21 | 7 | 3 | 0 |
代码
a = input ('a = ');
b = input ('b = ');
r = mod( a , b );
while r~=0
a=b;
b=r;
r=mod(a,b);
end
disp(b)
注意:不等号表示为“~=”
for循环-示例1-简单输出
(1 😃)
代码
for i = -2:1
disp( i );
end
表示
i从-2每次加1,一直加到i等于1.则依次输出四个值,分别是-2、-1、0、1.
(2 😃)
如果想要每次以0.5的步长增加,则如下:
for i = -2:0.5:1
disp( i );
end
(3 😃)
MATLAB中默认从开始值到结束值是递增的,因此,如果想要从大数变为小数,步长设为负值即可,如下:
for i = 1:-1:-2
disp( i );
end
for循环-示例2-累加计算
(1 😃)
1+2+…+100=?
代码
s= 0;
for i = 1 :1: 100
s = s + i;
end
disp( s )
(2 😃)
1+ 1/2+ 1/3+ 1/4+…+ 1/100=?
代码
s = 0;
for i = 1:100
s = s + 1/i;
end
disp( s )
(3 😃)
1-1/2+1/3-1/4+…-1/100=?
<方法一>——为了用mod函数
s = 0;
for i = 1:100
if mod(i, 2) ==1
s = s + (1/i);
else
s = s - (1/i);
end
end
disp( s )
注意1):有两个end,for-end和if-else-end
注意2):为变量赋值,用“=”;要比较值是否相等,用“= =”。
<方法二>——定义新变量控制符号
s = 0;
a = 1;
for i = 1:100
s = s + a/i;
a = -a;
end
disp( s )
<方法三>——给符号设置函数
s = 0;
a = 1;
for i = 1:100
s = s + (-1)^(i-1)/i;
end
disp( s )
for循环-作用的理解
上面的两个示例体现了for循环的基本作用,读值以及计算,具体应用如下:
读取向量中的值
v = [ 5 7 9 10 ];
for i = v
disp( i );
end
求向量中所有数字的和
v = [5 7 9 10 ];
s = 0;
for i = v
s = s + i;
end
disp( s );
检验和正不正确,可以用sum函数。最后加一行disp(sum(v))
来源:CSDN
作者:丞星girl
链接:https://blog.csdn.net/weixin_44964099/article/details/104439005