#include <cassert>
#include <iostream>
using namespace std;
double akpower(double x,int p)
{
int n =p;
double xn = x;
double result = 1.0;
while (1<= n)
{
if ( n%2 == 0)
{
n = n/2;
xn = xn * xn;
}
else
{
n = n-1;
result = result *xn;
}
}
return result;
}
int main ()
{
double i;
cin >> i;
int j;
cin >>j;
cout << akpower( i, j) ;
return 0;
}
คือตามข้างบนอ่ะครับ
เค้าให้โค้ดอันนี้มา โดยอ้างอิงว่ามันคือ Algorithm ของ Al-kashi
มันเป็นโค้ดสำหรับไว้ ยกกำลังตัวเลขครับ ป้อนค่าเข้าไปสองค่า
ค่าแรกเป็น ฐาน ค่าสองเป็นเลขยกกำลัง
ประเด็นอยู่ที่ว่าเค้าต้องการให้ดัดแปลง ให้ใช้ เลขยกกำลังติดลบได้ด้วย
ผมก็ลองทำดูอะครับ ว่าจะลองแปลโค้ดก่อนว่าหลักการทำงานมันทำยังไง
ที่งงเลยคือ "
มาได้ไงวะเห้ยยย"
ไม่เห็นคำสั่งอะไรใช้เลขยกกำลัง เห็นมีแต่คูณ ๆ result =1
ตอนนี้งงมากจริง ๆ ครับ เลยอยากให้ผู้รู้มาช่วยอธิบายการทำงานโค้ดนี่หน่อยอะครบ ถ้าเป็นไปได้
ขอบคุณล่วงหน้าครับ
ขอความช่วยเหลือครับ เกี่ยวกับโค้ด C++
#include <iostream>
using namespace std;
double akpower(double x,int p)
{
int n =p;
double xn = x;
double result = 1.0;
while (1<= n)
{
if ( n%2 == 0)
{
n = n/2;
xn = xn * xn;
}
else
{
n = n-1;
result = result *xn;
}
}
return result;
}
int main ()
{
double i;
cin >> i;
int j;
cin >>j;
cout << akpower( i, j) ;
return 0;
}
คือตามข้างบนอ่ะครับ
เค้าให้โค้ดอันนี้มา โดยอ้างอิงว่ามันคือ Algorithm ของ Al-kashi
มันเป็นโค้ดสำหรับไว้ ยกกำลังตัวเลขครับ ป้อนค่าเข้าไปสองค่า
ค่าแรกเป็น ฐาน ค่าสองเป็นเลขยกกำลัง
ประเด็นอยู่ที่ว่าเค้าต้องการให้ดัดแปลง ให้ใช้ เลขยกกำลังติดลบได้ด้วย
ผมก็ลองทำดูอะครับ ว่าจะลองแปลโค้ดก่อนว่าหลักการทำงานมันทำยังไง
ที่งงเลยคือ " มาได้ไงวะเห้ยยย"
ไม่เห็นคำสั่งอะไรใช้เลขยกกำลัง เห็นมีแต่คูณ ๆ result =1
ตอนนี้งงมากจริง ๆ ครับ เลยอยากให้ผู้รู้มาช่วยอธิบายการทำงานโค้ดนี่หน่อยอะครบ ถ้าเป็นไปได้
ขอบคุณล่วงหน้าครับ