C# 如何在不使用math.pow的情况下分解x^(x+1)

C# 如何在不使用math.pow的情况下分解x^(x+1),c#,algorithm,C#,Algorithm,我试过这个: static int myPow(int x) { int power = x + 1; int num = 0; for (int i = 0; i < power; i++) { num = x * i; x = x + num; } return n

我试过这个:

static int myPow(int x)
        {
            int power = x + 1;
            int num = 0;
            for (int i = 0; i < power; i++)
            {
                num = x * i;
                x = x + num;
            }
            return num;
        }

如果不使用Math.Pow,我如何将整数x乘以x+1?

这个想法是在循环中将x乘以x+1倍

按照以下步骤操作:

求幂x+1 以x值result=x开始变量result 循环i从1到幂,每个循环的结果乘以x,表示x*x*x*x幂次

static int myPow(int x) {
    int power = x + 1;
    int result = x;
    for (int i = 1; i < power; i++)
    {
        result *= x;
    }
    return result;
}

看看它在

FYI数学中的因式分解是如何实现的。为了好玩,可以使用以下公式计算结果:


您可以使用一种称为平方求幂的技术,它非常漂亮而且速度更快,需要花费Olg k时间,其中k是指数:

static int square(int n){
    return n * n;
}
static int pow(int n, int k){
    if(k == 1) return n;
    if(k % 2 == 1) return n * pow(n, k-1);
    return square(pow(n, k/2));
}
然后,如果你想得到x^x+1,你只需要打电话给powx,x+1


小,快,简单:

如果你能给我们展示一下你对数学的使用,那会很有帮助的。Pow,这样我们就可以代替它了!运行调试器中的程序,查看变量值,看看是否能找出错误的地方提示:x永远不应该出现错误change@dan这可能是一个教育性的练习。因式分解在这里意味着什么?你的意思是要计算x^x+1的值吗?如果是这样,请注意最大整数是小于2^32=8^8的一个整数,因此,正如@D Stanley所指出的,除非x<8,否则答案不能用整数表示。有时,通过解决一般问题,可以更轻松地解决特定问题。你能写一个方法static int IntPowint x,int y来计算x到y吗?如果您可以编写该方法,那么您的方法就是MyPowint x=>IntPowx,x+1;我想你会发现编写更通用的方法更容易。提示:首先确保您的方法对于y=0是正确的。下一步:对于y>=1,x到y的定义是什么?你能把这个定义翻译成代码吗?我认为你应该切换到long以避免溢出。在你的pow函数中:如果k==0,返回1,这可能是好的。如果k<0,抛出ArgumentOutOfRangeException或实现roots。答案是使x^x+1,因此我认为它适用于Natural,然后可以将其命名为PowForNaturalElexComponents,以便包含此静态函数的类的未来用户不会尝试在不支持的参数上调用它?
static int square(int n){
    return n * n;
}
static int pow(int n, int k){
    if(k == 1) return n;
    if(k % 2 == 1) return n * pow(n, k-1);
    return square(pow(n, k/2));
}