ループ(while / for)を再帰に、または再帰からループに変換する一般的な方法は?
この問題は主にアルゴリズムに焦点を当てており、おそらく抽象的でより学術的なものです。 例は思考を提供しているので、一般的な方法を使用したいので、例はあなたの思考についてより明確にするためにのみ使用されます。 一般的に、ループは再帰に変換できます。 例えば: for(int i=1;i<=100;++i){sum+=i;} そして、それに関連する再帰は次のとおりです。 int GetTotal(int number) { if (number==1) return 1; //The end number return number+GetTotal(number-1); //The inner recursive } そして最後にこれを簡素化するには、末尾再帰が必要です: int GetTotal (int number, int sum) { if(number==1) return sum; return GetTotal(number-1,sum+number); } ただし、ほとんどの場合、回答と分析はそれほど簡単ではありません。私が知りたいのは: 1)ループ(for / while……)を再帰に変換する「一般的な一般的な方法」を取得できますか?そして、変換を行う際にどのようなことに注意する必要がありますか?変換プロセスと同様に、いくつかのサンプルとあなたのpersudo理論で詳細な情報を書くほうが良いでしょう。 2)「再帰」には、線形再帰と末尾再帰の2つの形式があります。それで、どちらを変換するのが良いですか?どの「ルール」をマスターすべきですか? 3)再帰の「履歴」を保持する必要がある場合がありますが、これはループステートメントで簡単に実行できます。 例えば: List<string> history = new List<string>(); …