Эй У меня проблема: мне нужно решить x^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 просто возвращает базу. Однако для моего следующего я должен решить его, используя три формулы.
- х = 1
- х п, если п четно = [х п/2]
- х п, если п нечетно = х * [ х п/2]
S о чем я до сих пор является
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;
}
}
Так им просто пытаются получить даже номера работать первым, и когда я установил х = 2 и п = 4 она возвращает 8. Какой смысл для меня, так как, когда мощность 4/2 будет зацикливаться только на> 1. Поэтому я действительно пытаюсь выяснить способ заставить это зациклиться еще раз, оставаясь верным формуле, которую мне дали. И когда я добавил нечетный базовый случай, программа будет работать до n^5, но n^6 возвращается 32
Пища для размышлений: вы уверены, что вам нужен отдельный базовый корпус для 'power == 1'? – hugomg
Не направо, я добавил нечетную формулу мощности. который должен обрабатывать власть, когда она добирается до одного. Однако он работает только до 2^6, например –