fabvy12 发表于 2019-10-17 09:53:16

求解代码错误

double fact( int n )                              //这是我的其中一部代码,为什么在这个我的自定义函数里面,for循环里面i的值永远是1,但是a的值一直在变大,然后就在循环里面出不来?这是为啥?
{
        int i;
        double a=1;
        while (n>=0&&n<=10){
       
        for (i=1;i++;i<=n){
                a=a*i;
                i++;
        }
}
        return a;
}

bin554385863 发表于 2019-10-17 10:03:26

for (i=1;i++;i<=n)
for循环你在好好学一遍,谁家for循环是你这样写的????
for(初始条件;结束条件;条件变化)
{
//循环体
}

fabvy12 发表于 2019-10-17 10:10:13

bin554385863 发表于 2019-10-17 10:03
for (i=1;i++;i

哦,抱歉抱歉

fabvy12 发表于 2019-10-17 10:11:09

fabvy12 发表于 2019-10-17 10:10
哦,抱歉抱歉

改回来也没用,在自定义函数里面。i根本不动,我调试过了,i一直都是1

冷月无痕 发表于 2019-10-17 10:24:13

for (int i=0;i<=n; i++)
{

}

fabvy12 发表于 2019-10-17 10:32:23

冷月无痕 发表于 2019-10-17 10:24
for (int i=0;i

还是不行

fabvy12 发表于 2019-10-17 10:39:34

冷月无痕 发表于 2019-10-17 10:24
for (int i=0;i

可以了,谢谢!

xypmyp 发表于 2019-10-17 10:48:57

fabvy12 发表于 2019-10-17 10:32
还是不行

What number you pass into the function when you testing it?

fabvy12 发表于 2019-10-17 11:35:46

xypmyp 发表于 2019-10-17 10:48
What number you pass into the function when you testing it?

only No.1.

bin554385863 发表于 2019-10-17 12:29:16

#include <iostream>
#include <iomanip>
long double fat(int n)
{
    long double result = 1;
    if (n < 0)
    {
      std::cout << "数字非法";
      exit(1);
    }
    if (n == 0)
    {
      result = 1;
    }
    if (n > 0)
    {
      for (size_t i = 1; i < n + 1; i++)
      {
            result *= i;
      }
    }
    return result;
}
int main(int argc, char const *argv[])
{
    int a = 0;
    while (a != 50)
    {
      std::cin >> a;
      std::cout << std::fixed<<std::setprecision(0)<< fat(a) << std::endl;
      std::cout<<std::endl;
    }
    return 0;
}

---------------------------------------------------------------------------------------------
Microsoft Windows [版本 10.0.16299.1087]
(c) 2017 Microsoft Corporation。保留所有权利。

E:\Users\86184\Documents\Code>c:\Users\86184\.vscode\extensions\ms-vscode.cpptools-0.26.0\debugAdapters\bin\WindowsDebugLauncher.exe --stdin=Microsoft-MIEngine-In-neu43l3z.f4x --stdout=Microsoft-MIEngine-Out-0iqgw4w3.i2l --stderr=Microsoft-MIEngine-Error-orbrm5v5.2k3 --pid=Microsoft-MIEngine-Pid-w0g1l25q.djc "--dbgExe=E:\My Program\MinGW\bin\gdb.exe" --interpreter=mi
0
1

1
1

5
120

50
30414093201713378039796484017234741538658648106343392576177963008


E:\Users\86184\Documents\Code>

jackz007 发表于 2019-10-17 14:28:29

bin554385863 发表于 2019-10-17 12:29
---------------------------------------------------------------------------------------------
Mic ...

50!结果是错误的
30414093201713378039796484017234741538658648106343392576177963008 - 错误
30414093201713378043612608166064768844377641568960512000000000000 - 正确

bin554385863 发表于 2019-10-17 17:56:30

本帖最后由 bin554385863 于 2019-10-17 18:09 编辑

{:10_266:}{:10_266:}{:10_266:}
………

bin554385863 发表于 2019-10-17 17:57:33

本帖最后由 bin554385863 于 2019-10-17 18:09 编辑

jackz007 发表于 2019-10-17 14:28
50!结果是错误的
30414093201713378039796484017234741538658648106343392576177963008 - 错误
30414 ...

我也不知道电脑咋算的-_-||,
我用的vscode,这玩意经常性执行异常,有时候同一个代码执行几次的结果总有一两次都不一样
页: [1]
查看完整版本: 求解代码错误