โจทย์ทั้งหมด
ปานกลาง 0 ข้อที่แก้แล้ว อัตราผ่าน 0%

ยกกำลังแบบเวียนเกิด (Recursive Power)

คำนวณการยกกำลังด้วยวิธีเวียนเกิดโดยการหารเลขชี้กำลังครึ่งหนึ่งในแต่ละรอบ

คำนวณ base ยกกำลัง exponent ด้วยวิธีเวียนเกิด: x⁰ = 1 และ xⁿ = (x^(n/2))² เมื่อ n เป็นเลขคู่ หรือ x × (x^((n−1)/2))² เมื่อ n เป็นเลขคี่ วิธีนี้ใช้การคูณน้อยกว่าการวนลูปปกติมาก

ให้เขียนฟังก์ชัน recursive_power(base, exponent)

อินพุต

base: ฐาน exponent: เลขชี้กำลัง (ศูนย์หรือจำนวนเต็มบวก)

เอาต์พุต

คืนค่าผลลัพธ์ของ base ยกกำลัง exponent

เงื่อนไข

-10 ≤ base ≤ 10; 0 ≤ exponent ≤ 18

ตัวอย่าง

ตัวอย่างที่ 1
อินพุต:
base = 3
exponent = 5

ผลลัพธ์ที่คาดหวัง:
expected = 243
อินพุต:
long long base = 3;
long long exponent = 5;

ผลลัพธ์ที่คาดหวัง:
long long expected = 243;
อินพุต:
long base = 3;
long exponent = 5;

ผลลัพธ์ที่คาดหวัง:
long expected = 243;

คำอธิบาย

3⁵ = 3 × (3²)² = 3 × 81 = 243

ตัวอย่างที่ 2
อินพุต:
base = 7
exponent = 0

ผลลัพธ์ที่คาดหวัง:
expected = 1
อินพุต:
long long base = 7;
long long exponent = 0;

ผลลัพธ์ที่คาดหวัง:
long long expected = 1;
อินพุต:
long base = 7;
long exponent = 0;

ผลลัพธ์ที่คาดหวัง:
long expected = 1;

คำอธิบาย

กรณีฐาน: จำนวนใด ๆ ยกกำลัง 0 จะได้ 1 เสมอ

แหล่งอ้างอิง

โจทย์นี้ปรับให้เหมาะกับ CodeUtility กรุณาทำตามคำชี้แจงและข้อจำกัดด้านบน

เรียนรู้จากคนอื่น

แนวทางจากชุมชน

ยังไม่มีวิธีทำที่เผยแพร่ ลองแก้โจทย์นี้เพื่อแชร์วิธีแรก