1

ある数値の n 乗根を取得する方法について助けが必要です。

ユーザーは、番号 n と、ルートにしたい番号を入力します。cmath lib を使用せずに、分割統治法を使用してこれを解決する必要があります。

まだ動作しない私のコードは次のとおりです。

#include<iostream>
using namespace std;

float pow(float a,float c){
    if (a == 0)
        return 0;
    else if(a == 1)
        return 1;
    else{
        float p = pow(a,(c/2));
        if(c%2)
            return p*p*a;
        else
            return p*p;
    }
}

int main(){
    float a,b;
    float c;
    cout << "Enter positive number:(base)" << endl;
    do{
        cin >> a;
    }while (a < 0);
    cout << "Enter number: (root)" << endl;
    cin >> b;
    c = 1/b;
    cout << "Result:"<<pow(a,c) << endl;
    system("pause");
    return 0;
}

この問題にアプローチする方法についてのアイデアは、役に立ちます。

4

2 に答える 2

8

平方根を見つけるために分割統治法を使用する方法を教えてください。n乗根も同様です。

与えられた数値について、xと の間の平方根を検索する必要があり0ますx2=で割りx2ます。x2 * x2<の場合x、検索スペースが に移動するx2 -> xか、それ以外の場合は になります0 -> x2x2 * x2一致する場合x、平方根はx2です。n 乗根に対する同様の手法。

于 2012-06-29T18:07:55.847 に答える