Cセミコロンを使用せずに1からNまでの数字を印刷するプログラム
ここでは、問題のトリッキーな解決策を見ていきます。セミコロンを使用せずに1からNまでのいくつかの数字を印刷します。
この問題は2つの異なる方法で解決できます。 1つ目は反復法で、2つ目は再帰法です。
方法1
printf()関数は文字列の長さを返すため、ゼロ以外の値になります。結果を出力する条件で論理ANDを実行できます。次に、カウンターの値を増やします。
サンプルコード
#include<stdio.h> #define N 20 int main(int num, char *argv[]) { while (num <=N && printf("%d ", num) && num++) { //The while body is empty. } }
出力
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20
方法2
2番目の方法では、再帰を使用して同じタスクを実行する方法を確認します。 main関数でいくつかの引数を渡します。このメインは再帰的に呼び出されます。
サンプルコード
#include<stdio.h> #define N 20 main(int val) { if (val <=N && printf("%d ", val) && main(val + 1)) { //Body is empty } }
出力
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20
-
C++を使用して再帰を使用せずにルートからリーフへのパスを出力するプログラム
このチュートリアルでは、ルートノードから特定のバイナリツリー内のすべてのリーフノードへのパスを出力するプログラムについて説明します。 たとえば、次の二分木があるとしましょう この二分木には、4つのリーフノードがあります。したがって、ルートノードからリーフノードへのパスは4つになります。 これを解決するために、反復アプローチを使用します。二分木のプレオーダートラバーサルを実行している間、マップに親ポインタを格納できます。トラバーサル中にリーフノードに遭遇したときはいつでも、親ポインタを使用してルートノードからそのパスを簡単に出力できます。 例 #include <bits/st
-
再帰を使用せずにリストをフラット化するPythonプログラム
再帰手法を使用せずにリストをフラット化する必要がある場合は、ラムダ関数、「sum」メソッド、「map」メソッド、および「isinstance」メソッドを使用できます。 リストを使用して、異種の値(つまり、整数、浮動小数点、文字列などの任意のデータ型のデータ)を格納できます。 「isinstance」メソッドは、特定のパラメータが特定のデータ型に属しているかどうかを確認します。 匿名関数は、名前なしで定義される関数です。一般に、Pythonの関数は「def」キーワードを使用して定義されますが、無名関数は「lambda」キーワードを使用して定義されます。単一の式を取りますが、任意の数の引数を