c++ - 递归函数的问题(检查一个数字是否是一个完美的平方)
问题描述
我试图在 CodeBlocks 中编写一个递归函数来检查一个自然数(一个长双精度数)是否是一个完美的正方形。这个名为“Square”的函数通过引用输入 long double S 和 n(在开头设置为 1)、bool T 和要比较的 long double。
这里的代码:
void Square(long double& S, long double& n, bool& T,long double k){
S=S+2*n+1;
n++;
if(S==k){
T=true;
}
if(S>k){
T=false;
}
if(S<k){
Square(S,n,T,k);
}
}
在主要功能中:
long double S,n,k;
bool T=false;
for(long double b=1;b<50000;b++){
for(long double a=1;a<b;a++){
S=1;
n=1;
T=false;
k=12*a*b*b*b-3*a*a*a*a;
Square(S,n,T,k);
if(T==true){
cout<<a<<" "<<b<<" "<<k<<endl;
}
}
}
有时会出现此错误:“进程返回 -1073741571 (0xC00000FD)”(例如,当(a = 108 和 b = 121)并且程序停止时。有帮助吗?
解决方案
尝试这个:
#include <cmath>
bool isPerfectSquare( long num ) {
long root = long(sqrt(float(num)));
return root * root == num;
}
你会得到True
是否num
是一个完美的正方形,False
如果不是。
推荐阅读
- java - Spark - 如何获取随机唯一行
- python - 选择单选按钮后的 PySimpleGUI 文本框输出信息
- html - 在更改 SVG 宽度时保持字母间距不变
- queue - NiFi - 处理后的 JMS 确认
- jenkins - 关于管道语法的 Kubernetes Jenkins 插件问题
- arduino - Arduino异常第二次运行串行
- hadoop - Hive 连接因错误而关闭
- css - 如何用css实现手机上video的width=device的width,电脑上video的width=600px的html
- sql - 如何根据其他列值创建序列
- docker - 我正在尝试在 centos8 vagrantbox 上安装 docker,但遇到错误“下载成功,但校验和不匹配”