ループや条件なしで数値を出力するという謎を解く
ループや条件に依存せずに 1 から 1000 までの数値を連続して出力するという課題は、その型破りなアプローチでプログラマーの興味をそそります。プログラミングの基本的なツールがなければ、このような一見単純なタスクをどのようにして達成できるのでしょうか?
C でのソリューションのロックを解除
以下の C コード スニペットで示されているソリューション、ポインター算術と再帰を利用することにあります。
#include <stdio.h> #include <stdlib.h> void main(int j) { printf("%d\n", j); (&&main + (&exit - &main)*(j/1000))(j+1); }
このコードは関数を巧みに利用しています。ポインタと再帰を使用して、ループや条件文の必要性を回避します。 j/1000 の比率に基づいて次の再帰呼び出しのアドレスを計算します。 main 関数のアドレスを注意深く操作することにより、プログラムはシーケンス内の次の数値への「ジャンプ」を効果的にシミュレートします。
標準 C のバリアント
の場合より標準的な C アプローチを好む人は、次のコードを使用して関数の算術への依存を排除します。 pointers:
#include <stdio.h> #include <stdlib.h> void f(int j) { static void (*const ft[2])(int) = { f, exit }; printf("%d\n", j); ft[j/1000](j + 1); } int main(int argc, char *argv[]) { f(1); }
これらの C コード スニペットはどちらも、ループや条件を使用せずに数値を連続的に出力できることを示しています。これらは、関数ポインターと再帰を操作して、一見克服不可能な制限を克服する能力を示しています。
以上がC でループや条件文を使わずに 1 から 1000 までの数値を順番に出力するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。