无限循环计算阶乘问题

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了无限循环计算阶乘问题相关的知识,希望对你有一定的参考价值。

(1) 声明用于存储阶乘结果的double型变量result,初始值为1.0。(2) 声明用于存储整数n的int型变量n,初始值为1。(3) 声明int型变量i,初始值为1。(4) 第一重循环:使用无限循环while语句,如while(1)。在第一重循坏体内完成如下内容:○1在控制台输出“请输入求阶乘中的n(1~100),输入负整数退出本程序:”,提示用户输入n。○2调用scanf()函数获取从键盘输入的n的值。○3使用if单分支语句判断n值的合法性,如果n小于0,使用break语句跳出第一重循环;如果n等于0,使用continue语句返回○1,继续循环。○4如果n值在[1,100]范围内,则先给result赋值为1.0,然后使用for语句计算阶乘(此为第二重循环),循坏过程为:循坏n次,循坏变量i从1开始,在小于等于n的情况下开始递增,每次递增需要计算。result *=i○5输出n及其对应的阶乘结果(5) 程序退出。为什么我运行的结果是这样?是n=0那里出错了吗?该怎么改正?

参考技术A 应该是1被 第一个 ch=getchar()吃掉了
改成do while试试
参考技术B 可以 参考技术C 参考技术D 第5个回答  2017-11-29 你是南方学院的吧

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 了

以上是关于无限循环计算阶乘问题的主要内容,如果未能解决你的问题,请参考以下文章

为啥计算内部的异步会产生无限循环(vue)?

计算大整数的幂时的无限循环Java

Perl:“半”无限循环?

字母输入运行无限循环

在render()中更新状态时,防止无限循环

控制台上的 Vue 警告:组件渲染函数中可能存在无限更新循环