其他分享
首页 > 其他分享> > c-使用分治法找到数字的第n个根

c-使用分治法找到数字的第n个根

作者:互联网

我需要有关如何获得某个数字的第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;
}

关于如何解决此问题的任何想法都将是有用的.

解决方法:

让我告诉您如何使用分治法来求平方根.第n个根将是相似的.

对于给定的x,您需要搜索0到x之间的平方根.将其除以2 = x2.如果x2 * x2< x,然后您的搜索空间移至x2-> x否则为0-> X2.如果x2 * x2与x匹配,则您的平方根为x2.第n个根的类似技术.

标签:c,algorithm,divide-and-conquer,cmath
来源: https://codeday.me/bug/20191009/1879207.html