matlab怎么用for语句求阶乘

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了matlab怎么用for语句求阶乘相关的知识,希望对你有一定的参考价值。

要求输入一个数,输出结果,且要判断该数的合法性

a=input('请输入一个数:');
while a<0 || fix(a)~=a
disp('您输入的数不是正整数')
a=input('请重新输入:');
end
a
disp('a!=')
disp(factorial(a))

(运行后:)
请输入一个数:-20
您输入的数不是正整数
请重新输入:-12
您输入的数不是正整数
请重新输入:2.3
您输入的数不是正整数
请重新输入:-4.3
您输入的数不是正整数
请重新输入:12

a =

12

a!=
479001600追问

验证合法性没问题,但我想要的是用for语句实现阶乘,不要内置函数,改改吧?

追答

a=input('请输入一个数:');
while a<0 || fix(a)~=a
disp('您输入的数不是正整数')
a=input('请重新输入:');
end
m=1;
for i=1:a
m=m*i;
end
a
disp('a!=')
disp(m)
请输入一个数:5.5
您输入的数不是正整数
请重新输入:-5.5
您输入的数不是正整数
请重新输入:-20
您输入的数不是正整数
请重新输入:5

a =

5

a!=
120

参考技术A function y=f(x)
y=1;
if(x>0)
for i=x:-1:1
y=y*i;
end追问

你在改改吧,把C语言里的东西搬这来了

for循环 嵌套 算阶乘和的问题

dim as 就省略哈
循环:
Private Sub Command1_Click()
s = 0
For j = 1 To 3
t = 1
For i = 1 To j
t = t * i
Next i
s = s + t
Next j
Print s
End Sub
这样算出来是正确的
问题是“t=1”为什么不能写在s=0的后面,也就是for循环的前面
Private Sub Command1_Click()
s = 0
t = 1
For j = 1 To 3

For i = 1 To j
t = t * i
Next i
s = s + t
Next j
Print s
End Sub
这样算的话就是错了的。。是什么原因呢????请教一下~!!

两个程序,都是正确的。只是“t=1”写在s=0的后面,也就是for循环的前面的时候,输出的是“t”跟“i”累乘后再和“s”相加的结果,也就是15
而“t=1”写在第一个for循环的后面的时候,每执行一次“J”的循环,t都被重新赋值为t=1.所以前一个输出结果应该为最后一次:3*3=9
兄台,可能表达不清,多见谅!不过编程题,你最好用计算机的思维方式来想就行了,它只会一步步规则的运算。
参考技术A 循环仅仅是执行for --> next 内的代码,这样子的话循环两次之后t就等于2
然后t*i 就是6 了

以上是关于matlab怎么用for语句求阶乘的主要内容,如果未能解决你的问题,请参考以下文章

怎么用while语句算5的阶乘?

无限循环计算阶乘问题

C语言求n个数的阶乘和,使用for语句循环,一定要用套嵌for语句吗?不用套嵌的单层for可以吗,

C语言for循环 求1--10阶乘的和

C语言for循环 求1--10阶乘的和

用while语句求20的阶乘的和