gpt4 book ai didi

c++ - 递归在C++中的循环内不起作用

转载 作者:行者123 更新时间:2023-12-02 09:54:47 25 4
gpt4 key购买 nike

我在C++中有一个要解决的问题如下:1 +(1/2!)+(1/3!)+(1/4!)+(1/5!)...等等

我为之编写的代码如下

#include <iostream>
using namespace std;

int fact(int);

int main()
{
int n; float sum=0;
cout<<"Enter number of terms:";
cin>>n;

for(int i=1;i<=n;i++)
{
sum = sum + (float)(1/(fact(i)));
}

cout<<endl<<"The sum is :"<<sum;
return 0;
}

int fact(int x)
{
if(x == 0 || x == 1)
return 1;
else
return x * fact(x-1);
}

上面的代码不返回任何输出。之前我已经计算了阶乘而不使用for循环。并且递归有效。

最佳答案

问题是您在递归中的基本情况:

int fact(int x)
{
if(x == 0 || x == 1)
return 0;
...

这使所有阶乘为零,然后除以零: 1/(fact(i))并使程序崩溃。

正确的基本情况是 1,您需要避免使用 1.0f/fact(i)进行整数除法。

如果您首先对 fact函数进行了测试,那么您会很快发现基本情况下的错误。

关于c++ - 递归在C++中的循环内不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61153507/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com