我在
Eclipse IDE中执行下面的Java代码.
public class Programs { public static void main(String[] args) { // Todo Auto-generated method stub int i,num,n; n = 6; // num=n-1; for (i = 1; i <= n - 1; i++) { n = n * i; } System.out.println("Factorial of the declared number is" + " " + n); } }
它将输出显示为-1420957696.如果我取消注释并在for循环中使用“num”变量,代码工作正常.我认为,对于每次迭代,与i的值相比,n的值逐渐变化.相同的代码在VBScript中工作正常(见下文).有人可以解释这个区别吗?
Option Explicit Dim i,num num = InputBox("enter a number") For i=1 To num-1 num = num * i Next MsgBox "The factorial of entered number is: " & num,3,"Program for factorial"
解决方法
Java的:
n将会变得相当大.一世.
因此,i< = n - 1将永远为真,直到你的n溢出并回绕到负数. 一种解决方法是使用num来保存n的原始值,并使用i< = num - 1作为停止条件. VBScript中: 在各种基础知识(例如VBScript,VBA)中,num-1在循环开始时被有效地计算,并且对num的进一步调整对停止条件没有影响.您可以通过运行明确地看到这一点
Dim j Dim i j = 10 For i = 1 To j WScript.Echo i j = 1 'has no effect on the stopping condition. Next
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。