1

1から100および100から1までの数値を表示する関数を作成したいのですが、再帰を使用してこれを行う方法がわかりません。

他のループを使用してこれを実行したくありません。私はc++とc#の初心者なので、ヒントを提供し、私の質問方法を無視してください。

4

8 に答える 8

5
void Print100(int n)
{
   if (n > 100)
   {
       Console.WriteLine();  // cosmetic
       return;               // stop recursing
   }

   Console.WriteLine(n);     // 1-100
   Print100(n+1);            // recurse
   Console.WriteLine(n);     // 100-1, on the way out
}


void Main()
{
    Print100(1);
}
于 2012-10-22T10:01:59.497 に答える
3

1から100までの数字を印刷する場合

private void number(int n)
        {
            if (n == 100)
                return;
            Response.Write(n + "<br/>");
            number(n + 1);
        }

電話:

number(0);
于 2012-10-22T09:57:51.277 に答える
3

次の場合に再帰を実行できます。

public static void For<T>(
    T initializer,
    Func<T, bool> condition,
    Func<T, T> iterator,
    Action<T> action)
{
    if (!condition(initializer)) return;
    action(initializer);
    For(iterator(initializer), condition, iterator, action);
}

1から100:

For(1, i => i <= 100, i => i + 1, i => Console.WriteLine(i));

演習として100対1が残っています。

于 2012-10-22T09:58:59.467 に答える
2

基本的に、現在の数値と方向(上または下)の2つのパラメーターを受け取る関数を記述します。次に、その数値を出力し、増減して、0に達するまで同じ関数を再度呼び出します。

于 2012-10-22T09:59:30.117 に答える
1

この関数はC++で使用できます。

    void printNumbers(int number)
    {
       if (i >= 1) 
       {
          // 100 --> 1
          cout << number << " ";
          printNumbers(i-1);
          // 1 --> 100
          cout << number << " ";
       }
    }

printNumbers(100)を使用して関数を呼び出します

お役に立てれば!

于 2012-10-22T10:04:11.130 に答える
0

c#

public void recurseInts( int start, int finish ){
 if( start > finish ) return;
 Console.WriteLine(start);
 Console.WriteLine(finish - start);
 recurseInts(start + 1 , finish);
}

recurseInts(0,100);
于 2012-10-22T09:59:44.583 に答える
0

これがC++で必要なものだと思います

#include <iostream>
using namespace std;

void recur(int start, int end,bool asc){
    cout << start << endl;
    if(!asc && start==0)return;
    if(start == end) asc = false;
    asc?start++:start--;
    recur(start, end, asc);
}

int main(){
    recur(0, 100,true);
    system("pause");
    return 0;
}
于 2012-10-22T10:12:44.830 に答える
0

このコードをコピーして、課題を送信してください。

class Program
{

    public static bool forward = false;
    public static bool stop = false;
    static void Main(string[] args)
    {
        PrintNumbers(0);
        Console.ReadLine();

    }

    private static void PrintNumbers(int i)
    {
        if (i <= 100 && !forward)
        {
            Console.WriteLine(i);
            if (i == 100)
            {
                forward = true;
            }
            PrintNumbers(i + 1);

        }
        if (i >= 0  && i < 100 && forward && !stop)
        {


            Console.WriteLine(i);

            PrintNumbers(i - 1);
            if (i==0)
            {
                stop = true;
            }

        }

    }
}
于 2012-10-22T10:19:46.023 に答える