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

C++でのみ1桁または3桁で構成されるN未満のすべての数値を出力する再帰プログラム


正の整数型の値を格納するNとして整数変数が与えられます。タスクは、数字1、3、または両方の組み合わせを持つ、指定された値N未満のすべての数値を再帰的に出力することです。

このためのさまざまな入出力シナリオを見てみましょう-

入力 − int num =40

出力 −数字1または3のみで構成されるN未満のすべての数値を出力する再帰プログラムは次のとおりです。3331 13 11 3 1

説明 −変数numに格納されている40として正の整数値が与えられます。ここで、数字1、3、またはその両方を含むすべての数字を再帰的に見つけます。40未満の数字は1、3、11、13、31、33です

入力 − int num =5

出力 −数字1または3のみで構成されるN未満のすべての数値を出力する再帰プログラムは次のとおりです。31

説明 −変数numに格納されている40として正の整数値が与えられます。ここで、数字1、3、またはその両方を含むすべての数字を再帰的に見つけます。5未満の数字は1と3​​です。

入力 − int num =1

出力 −間違った入力

説明 −変数numに格納された1として正の整数値が与えられます。ここで、数字1、3、またはその両方を含むすべての数値を再帰的に見つけます。1未満の正の整数は0のみであるため、1未満の数値は0であり、出力は間違った入力です。

以下のプログラムで使用されているアプローチは次のとおりです

  • 整数変数をnumとして入力します。関数へのパラメーターとしてnumを渡すことにより、関数Recursive_Numbers(num)に渡します。

  • 関数Recursive_Numbers(num)

    の内部
    • 変数をbool型のチェックとして宣言し、1で設定します。

    • numが0より大きいかどうかを確認してから、tempが0より大きいときに開始し、1にチェックします。数字をtemp%10に設定します。

    • IF桁が1に等しくなく、桁が3に等しくないことを確認してから、チェックを0に設定します。temp=temp/10に設定します。

    • チェックが1の場合はチェックしてから、数値を出力します。

    • 関数Recursive_Numbers(num-1)

      を再帰的に呼び出します。

#include <iostream>
using namespace std;
void Recursive_Numbers(int num){
   bool check = 1;
   int temp = num;
   if(num > 0){
      while(temp > 0 && check == 1){
         int digit = temp % 10;
         if (digit != 1 && digit != 3){
            check = 0;
         }
         temp = temp / 10;
      }
      if(check == 1){
         cout<< num << " ";
      }
      Recursive_Numbers(num - 1);
   }
}
int main(){
   int num = 40;
   if(num <= 1){
      cout<<"Wrong input";
   }
   else{
      cout<<"Recursive program to print all numbers less than N which consist of digits 1 or 3 only are: ";
      Recursive_Numbers(num);
   }
   return 0;
}

出力

上記のコードを実行すると、次の出力が生成されます

Recursive program to print all numbers less than N which consist of digits 1 or 3 only are: 33 31
13 11 3 1

  1. C++の最小ヒープの値x未満のすべてのノードを出力します

    この問題では、最小ヒープが与えられます および値x x未満のすべてのノードを印刷する必要があります。 最小ヒープ は、すべてのノードの値が子ノードのノード値よりも小さい特殊なタイプの二分木です。 問題を理解するために例を見てみましょう- X =45 出力- 2 4 7 10 17 22 33 34 ここで、この問題を解決するには、最小ヒープ全体のプレオーダートラバーサルを実行し、指定された値X未満の値のみを出力する必要があります。ノードの値がxより大きい場合、トラバースは行われません。そこの子ノードの値はxより大きくなります。最小ヒープのプレオーダートラバーサルを実行す

  2. 完全な平方であり、数値のすべての桁の合計が10未満である範囲内のすべての数値を検索するPythonプログラム

    完全な平方が存在する範囲内のすべての数値を検索する必要があり、数値の桁の合計が10未満の場合、リスト内包表記が使用されます。 以下は同じのデモンストレーションです- 例 lower_limit = int(input(“Enter the lower range: “)) upper_limit = int(input(“Enter the upper range: “)) my_list = [] my_list = [x for x in range(lower_limit,upper_limit+1) if (int(x**0.5))**