Computer >> คอมพิวเตอร์ >  >> การเขียนโปรแกรม >> การเขียนโปรแกรม C

โปรแกรม C เพื่อสร้างค่าของ x กำลัง n โดยใช้ฟังก์ชันแบบเรียกซ้ำ


ปัญหา

คำนวณค่าของ x n โดยที่ทั้ง x และ n เป็นอินพุตที่กำหนดโดยผู้ใช้ขณะรันไทม์

วิธีแก้ปัญหา

วิธีแก้ปัญหาในการสร้างค่าของ x กำลัง n โดยใช้ฟังก์ชันแบบเรียกซ้ำในภาษาซีมีดังต่อไปนี้ -

ตรรกะในการค้นหา x n ถูกกล่าวถึงด้านล่าง −

//Calling function:
Xpow=power(x,n);
//Called function:
if (n==1)
   return(x);
else if ( n%2 == 0)
   return (pow(power(x,n/2),2)); /*if n is even*/
else
   return (x*power(x, n-1));

อัลกอริทึม

อ้างถึงอัลกอริทึมที่ระบุด้านล่างเพื่อสร้างค่าของ x กำลัง n โดยใช้ฟังก์ชันแบบเรียกซ้ำ

ขั้นตอนที่ 1 − อ่านตัวแปร int แบบยาว

ขั้นตอนที่ 2 − ประกาศฟังก์ชันต้นแบบ

ขั้นตอนที่ 3 − ฟังก์ชันการโทร

Xpown=power(x,n) goto step 5

ขั้นตอนที่ 4 − พิมพ์ xpown

ขั้นตอนที่ 5 − เรียกว่าฟังก์ชัน

ขั้นตอนที่ 5.1 − ถ้า (n==1)

ขั้นตอนที่ 5.1.1 − ผลตอบแทน(x)

ขั้นตอนที่ 5.2 − อื่น ๆ ถ้า (n%2 ==0)

ขั้นตอนที่ 5.2.1 − ย้อนกลับ (ธาร(อำนาจ(x,n/2),2)); /*ถ้า n เป็นคู่*/

ขั้นตอนที่ 5.3 − อื่น ๆ

ขั้นตอนที่ 5.3.1 − ผลตอบแทน (x*กำลัง (x, n-1)); /* ถ้า n เป็นเลขคี่*/

โปรแกรม

ต่อไปนี้เป็นโปรแกรม C เพื่อ สร้างค่าของ x กำลัง n โดยใช้ฟังก์ชันแบบเรียกซ้ำ

#include <stdio.h>
#include <math.h>
void main(){
   long int x, n, xpown;
   long int power(int x, int n);
   printf("Enter the values of X and N: \n");
   scanf("%ld %ld", &x, &n);
   xpown = power (x, n);
   printf("X to the power N = %ld\n",xpown);
}
/*Recursive function to computer the X to power N*/
long int power(int x, int n){
   if (n==1)
      return(x);
   else if ( n%2 == 0)
      return (pow(power(x,n/2),2)); /*if n is even*/
   else
      return (x*power(x, n-1)); /* if n is odd*/
}

ผลลัพธ์

เมื่อโปรแกรมข้างต้นทำงาน มันจะให้ผลลัพธ์ดังต่อไปนี้ −

Enter the values of X and N:
5 4
X to the power N = 625