在代码中返回3221225725以进行简单概率运算

Return 3221225725 in a code for simple probability operation

本文关键字:简单 概率 运算 代码 返回 3221225725      更新时间:2023-10-16

我试图制作一个对概率进行简单运算的代码,但它总是返回相同的值(3221225725)。我多次重写和更改代码(更改变量类型、停止使用switch、为x-y创建变量等),但它始终返回相同的值。有人知道它为什么一直这样做吗?

#include<iostream>
#include<cmath>
using namespace std;
float z;
float y;
float a = z - y;
int factorial(float x)
{
if (x == 1)
{
return 1;
}
else
{
return x * factorial(x - 1);
}
}
int main()
{
cout << "Insert total number of elements or press 0 to exit" << endl;
cin >> z;
cout << "Insert total number of attempts or press 0 to exit" << endl;
cin >> y;
if (z > 0 && y > 0)
{
return (factorial(z) / (factorial(y)) * (factorial(a)));
}
else
{
return 0;
}
}

好吧,代码中有几个小问题,但它们加在一起会产生一大堆问题。

这是一个"工作"版本,可以解决您的大多数问题,代码中的注释表明您犯了哪些错误:https://coliru.stacked-crooked.com/a/0716e3a1fc7ecafc

你制造的大问题:

  • 在初始化"a"之前,您使用"z"answers"y"中的值对其进行了初始化,这意味着"a"包含未初始化的内存,您将获得随机结果
  • 您正在使用"=="浮点数字与浮点数字进行直接比较,浮点数字不是完美的表示,并且每次数学运算都会引入少量错误。当比较浮点数时,你几乎总是需要将它们与一些合理的容差进行比较,比如在0.00001以内
  • 您使用主函数的"return"试图传递一个值。程序主函数的返回值是操作系统的标志,指示程序如何运行;0表示程序运行良好,任何其他值都表示错误代码。相反,您希望打印出值