嘿,我有一个问题,我必须以多种方式解决x^n。其中之一涉及使用递归公式,给我一个很难的时间。这样的方法之一我用递归对于x^N对于n> = 0递归到指数的递归解决方案
int power2(int base, int power){
if (power == 0)
return 1;
else if (power == 1)
return base;
else
return (base * power2(base, power - 1));
}
这个有意义的我因此,当我设定X = 2和N = 4,则减少功率,其作用作为一个计数器,并且把2x2的能量提升到3,4 * 2,提升到2,8 * 2 = 16的能力。比功率提升到1,并且我有一个基本情况是如果能量提升到1它只是返回基地。但是对于我的下一个,我必须使用三个公式来解决它。
- X = 1
- X Ñ如果n是偶数= [X N/2]
- X Ñ如果n是奇数= X * [ X n/2个]
小号Ø我有什么到目前为止
int power3(int base, int power){
if(power == 0){
return 1;
}
else if (power == 1)
return base;
// if power is even
if (power % 2 == 0){
return base*(power3(base,(power/2)));
}
// if power is odd
else{
return 0;
}
}
所以我只是试图让偶数先工作,当我设置X = 2和N = 4,返回8这对我来说很有意义,因为当功率为4/2只会循环两次,因为> 1。所以我真的想找出一种方法来让它循环一次,同时保持真实的公式给我。当我现在加入奇数基本情况下,程序将运行直到n^5,但是n^6返回32
食物的思考:你确定你需要一个单独的基础案例'power == 1'吗? – hugomg
没有你的权利,我补充了奇怪的力量公式。当它达到一个时它应该处理权力。然而,它只能运行到2^6,例如 –