早教吧 育儿知识 作业答案 考试题库 百科 知识分享

问一个C++迭代法求一个数平方根的问题我编的这个程序对大于1的数有用,对小数没有用.请问问题出在哪里.怎么破.#includeusingnamespacestd;doublemysqrt(doublea){doublex=(a>1?1:0),y=a,z;while(1){z=(x+y)/2;cout

题目详情
问一个C++迭代法求一个数平方根的问题
我编的这个程序对大于1的数有用,对小数没有用.请问问题出在哪里.怎么破.
#include
using namespace std;
double mysqrt(double a)
{
double x=(a>1?1:0),y=a,z;
while(1)
{z=(x+y)/2; cout
▼优质解答
答案和解析
如果一个数大于1,那么它的平方根肯定在1和它本身之间,你这么不停地迭代是可以的;
但是如果一个数小于1,那么它的平方根比它本身大,这个数字在它本身和1之间;而按你这句话:
double x=(a>1?1:0),y=a,z;
你把这个数字限制在了0和它本身之间,那再怎么迭代肯定也迭代不到结果了.
为了不改后面的程序,你只要把第一句改成这样就OK,把结果限制在0和1之间迭代.
double x=(a>1?1:0),y=(a > 1 a :1),z;
看了问一个C++迭代法求一个数平方...的网友还看了以下: