1

C# でジェネリック デリゲートを発見したばかりで、再帰的に使用できるかどうかを考えていたところ、フィボナッチ数の文字列を限界まで返すだけのこの単純な部分を思いつきました。

Func<int, int, string, string> Fibonanci;
Fibonanci = delegate( int a, int b, string c )
{
    return "";
};
Fibonanci = delegate( int a, int b, string c )
{
    if( ( a == 0 ) && ( b == 0 ) )
    {
        b = 1;
        c += ( "0" + ( a.ToString() + b.ToString() ) ); 
    }
    else
    {
        c += ( a + b ).ToString();
    }

    if( ( a >= limit ) || ( b >= limit ) )
    {
        return ( c );
    }
    else
    {
        return Fibonanci( b, ( b + a ), c );
    }
};

これが私のコードです。問題なく動作します。最初の割り当てを削除する方法があるかどうかを尋ねています(割り当てられていない変数を使用したというエラーが表示されます)

4

2 に答える 2

1

技術的には、次のように割り当てることができます。

Func<int, int, string, string> Fibonanci = null;

これにより、これを行う必要がなくなります。

Fibonanci = delegate( int a, int b, string c )
{
    return "";
};
于 2013-10-15T12:42:56.343 に答える