当前位置: 首页 > 知识库问答 >
问题:

c#中的for循环与python中的For循环

仲浩旷
2023-03-14

我正在编写一个计算e^x值的方法。我在python中实现它的方式如下。

import math

def exp(x):
    return sum([
        x**n/math.factorial(n)
        for n in range(0, 100)
    ])

这将很好地返回e^x的值。但是,当我尝试在c#中实现相同的方法时,它没有输出与python中相同的值。以下是c#中的实现。

static double exp(int x)
{
    double FinalAnswer = 0;
    for (int j = 0; j <= 100; j++)
    {
        FinalAnswer += (Math.Pow(x, j))/Factorial(j);
    }
    return FinalAnswer;
}

起初,这段代码的输出是一个无穷大符号。为了解决这个问题,我只是减少了循环运行的次数。在c#中,循环只运行10次,代码的输出非常接近于python中循环运行100次的输出。我的问题是,在不同的编程语言中,两个循环之间发生了什么。起初,我认为我在计算e^x的方法中使用的表达式正在快速收敛。但是一个运行10次的循环如何产生与运行100次的循环的输出相匹配的输出。

此外,当我将c中的for循环增加到20和30时,x的e^x值

共有1个答案

路阳华
2023-03-14

欢迎来到Stack Overflow!很好的第一个问题。

这里您可能遇到的是C#版本的阶乘函数的整数溢出(至少是它的实现,或者它来自哪里)。

int类型是C中的32位,这意味着它的边界是-2^31

当你在C#中运行阶乘函数时,它会在开始的一段时间内正常启动,但是如果你继续运行,你会看到它突然变成负数,如果你继续运行的话,它会变为0并停止变化。你看到了被0除后无穷大的输出,而C#有一种处理双倍运算的方法;那就是只返回两倍。正确认。

在python中没有发生这种情况的原因是它使用可变数量的位数来存储其数值。

补充说明:您可能还想尝试使用一个与double类型一起工作的阶乘函数,而不是int或long类型,但是这样做,您将失去精确值的精度,但随着可以存储的数字的大小越来越大,您会得到更多的范围

 类似资料:
  • 问题内容: 在下面的示例代码中,是否真的需要counter = 0,还是有更好,更多的Python方法来访问循环计数器?我看到了一些与循环计数器有关的PEP,但它们要么被延迟要么被拒绝(PEP 212 和PEP 281)。 这是我的问题的简化示例。在我的实际应用程序中,这是通过图形完成的,整个菜单必须每帧重新绘制一次。但这以易于复制的简单文本方式进行了演示。 也许我还应该补充一点,我正在使用Pyt

  • 主要内容:for循环,嵌套循环,无限循环在某些情况下,我们可能需要重复执行某些代码,这时就需要用到 C# 中的循环语句,C# 中支持 for 循环、foreach 循环、while 循环和 do while 循环等循环语句,本节我们主要来介绍一下 C# 中的 for 循环。 for循环 使用 for 循环可以重复执行一部分代码,而且重复的次数是可以设定的,其语法格式如下所示: for(初始化语句; 判断条件; 迭代器){      //

  • C++ 循环 for 循环允许您编写一个执行特定次数的循环的重复控制结构。 语法 C++ 中 for 循环的语法: for ( init; condition; increment ) { statement(s); } 下面是 for 循环的控制流: init 会首先被执行,且只会执行一次。这一步允许您声明并初始化任何循环控制变量。您也可以不在这里写任何语句,只要有一个分号出现即可。

  • 问题内容: 我正在从Java切换到C ,并且想知道C 是否包含我在Java中使用的增强的for循环,例如: 在C ++中是否可能有相同的“快捷方式”? 问题答案: 在C ++ 11中,如果编译器支持,则可以。这称为基于范围的。 它适用于C样式数组以及具有函数并返回迭代器的任何类型。例:

  • 本文向大家介绍C#中for循环、while循环循环执行的方法,包括了C#中for循环、while循环循环执行的方法的使用技巧和注意事项,需要的朋友参考一下 先给大家介绍下C#中的循环执行for循环 在这一节练习中,我们向大家介绍一下C#中的另一种重要的循环语句,for循环。 表达式1:一般为赋值表达式,给控制变量赋初值; 表达式2:逻辑表达式,循环控制条件;当条件为真时,循环执行循环体中的语句。

  • 主要内容:Python for循环的具体应用Python 中的循环语句有 2 种,分别是 while 循环和 for 循环,前面章节已经对 while 做了详细的讲解,本节给大家介绍 for 循环,它常用于遍历字符串、列表、元组、字典、集合等序列类型,逐个获取序列中的各个元素。 for 循环的语法格式如下: for 迭代变量 in 字符串|列表|元组|字典|集合:     代码块 格式中,迭代变量用于存放从序列类型变量中读取出来的元素,所以