Cプログラミング
 Computer >> コンピューター >  >> プログラミング >> Cプログラミング

再帰関数を使用してxpowernの値を生成するCプログラム


問題

x n の値を計算します 、ここで、xとnは両方とも、実行時にユーザーによって与えられた入力です

解決策

Cプログラミング言語の再帰関数を使用してxpowernの値を生成するソリューションは、次のとおりです-

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));

アルゴリズム

再帰関数を使用してxpowernの値を生成するには、以下のアルゴリズムを参照してください。

ステップ1 −longint変数を読み取る

ステップ2 −関数プロトタイプを宣言する

ステップ3 −関数を呼び出す

Xpown=power(x,n) goto step 5

ステップ4 −xpownを印刷

ステップ5 −呼び出された関数

ステップ5.1 − if(n ==1)

ステップ5.1.1 − return(x)

ステップ5.2 −それ以外の場合(n%2 ==0)

ステップ5.2.1 − return(pow(power(x、n / 2)、2)); /*nが偶数の場合*/

ステップ5.3 −その他

ステップ5.3.1 − return(x * power(x、n-1)); /*nが奇数の場合*/

プログラム

以下は、再帰関数を使用してxpowernの値を生成する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

  1. 関数内のポインターを使用して合計と差を見つけるCプログラム

    aとbの2つの数があるとします。 (a + b)と(a --b)の両方を計算できる関数を定義する必要があります。ただし、Cの関数を使用すると、最大で1つの値を返すことができます。複数の出力を見つけるために、ポインターを使用して関数の引数に出力パラメーターを使用できます。この問題では、aをa + bで更新し、bをa-bで更新します。関数を呼び出すときは、これら2つの変数のアドレスを渡す必要があります。 したがって、入力がa =5、b =8の場合、出力はa + b=13およびa--b=-3になります。 これを解決するには、次の手順に従います- 関数solve()を定義します。これは、aと

  2. 再帰関数を使用して数値のGCDを見つけるCプログラム

    問題 Cプログラミング言語の再帰関数を使用して、指定された2つの数値の最大公約数(GCD)を見つけます。 解決策 再帰関数を使用して、指定された2つの数値の最大公約数(GCD)を見つけるための解決策は、次のとおりです- アルゴリズム 再帰関数を使用して、指定された2つの数値の最大公約数(GCD)を見つけるには、以下のアルゴリズムを参照してください。 ステップ1 −再帰関数を定義します。 ステップ2 −2つの整数aとbを読み取ります。 ステップ3 −再帰関数を呼び出します。 a. if i>j b. then return the function with parameter