সমস্যা
x n এর মান গণনা করুন , যেখানে x এবং n উভয়ই রানটাইমে ব্যবহারকারীর দেওয়া ইনপুট
সমাধান
C প্রোগ্রামিং ল্যাঙ্গুয়েজে রিকার্সিভ ফাংশন ব্যবহার করে 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 − প্রত্যাবর্তন (pow(power(x,n/2),2)); /*যদি n জোড় হয়*/
ধাপ 5.3 - অন্যথায়
ধাপ 5.3.1 − রিটার্ন (x*শক্তি (x, n-1)); /* যদি n বিজোড় হয়*/
প্রোগ্রাম
পুনরাবৃত্ত ফাংশন ব্যবহার করে x পাওয়ার n এর মান তৈরি করতে নিচে C প্রোগ্রাম দেওয়া হল −
#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