0

f(data)入力として行列を取り、2 つの行列を出力する関数がn1ありますn2。それらを組み合わせると、元のマトリックスが得られます。

m反復 1 でdata行列が渡されるように、これを何度も反復する必要があります。次の繰り返しで and を持ってn1おりn2、今は and を呼び出さなければなりませf(n1)f(n2)。次の繰り返しでは、say and のf(n1)opn11n12say f(n2)and n21are my result の op は、、、 とn22呼ばれる必要があります。このプロセスは m 回の繰り返しまで続きます。そのため、最終結果として行列が得られます。f(n11)f(12)f(n21)f(n22)2^m

どうすればいいですか?

4

1 に答える 1

0

(編集:OPは、この回答が書かれた後、言語はmatlabであると述べています。私のコードサンプルは、matlabがわからないため、cスタイルのままです。)

これは、これがどの言語にあるのかを知らずに行うのは困難です。関数は、行列と反復の 2 つのパラメーターを運ぶ必要があります。そのため、各操作内で反復回数を 1 減らします。

f(inputMatrix, iteration)
{
    //Stop condition
    if (iteration <= 0)
        return; (no change)
    //...
    f(n1, iteration-1);
    f(n2, iteration-1);
}

再帰関数を使用する場合、いつ関数を停止する必要があるかを常に制御する必要があります。反復回数とその他の条件を確認します (たとえば、行列を分割できます)。

于 2013-06-17T13:43:26.813 に答える