プログラム内の一見無限の入力ループについて簡単な質問がありました。while ループで発生していると確信しており、それが私の数学またはコーディングによるものかどうか疑問に思っています。ループは私にとってまだ新しいものなので、助けや説明があればいいのにと思います! このプログラムは、ニュートン法を使用して z の p 乗根、残差、およびループ間の改善を求めるプログラムの始まりです。また、私の目的には for ループの方が適しているのではないかと考えていました。ここまでです:
#include <iostream>
#include <cmath>
using namespace std;
double Newton(double z, int p, double &x, double &n);
int main(){
double z, x, n, residual, bai, bri;
int p;
x = 1;
n = 1;
cin >> z >> p;
double roots = Newton(z, p, x, n);
cout.precision (5);
cout << "Input: z = " << z << ", p = " << p << endl << "Root = " << x << endl;
}
double Newton(double z, int p, double &x, double &n){
x = (x - ((pow (x, p) - z)/(p * (pow (x, (p - 1))))));
while (x != 0){
x = (x - ((pow (x, p) - z)/(p * (pow (x, (p - 1))))));
n++;
}
return x;
}