2009-08-31 17 views
0

simonn helped me to code an ordered integer partition function here.彼は2つの機能を掲示しました.1つの関数は単にパーティションの数を戻し、2つ目の関数はパーティションをリストとして返します。JavaコードをPHPコード(13行)に翻訳

私はすでにJavaからPHPへの第一の機能を変換するために管理してきました:

残念ながら、私は第2の機能を変換するために管理することはできません。誰も私を助け、私のためにこの小さな機能を翻訳できますか?

解決策がいくつかの機能を持つクラスの代わりに1つの単一の機能であれば素晴らしいことでしょう。

ありがとうございます!この素晴らしい答えのためにsimonnにもう一度感謝します!

答えて

1

おそらくmainメソッドは必要ありません。これは、他のメソッドを呼び出す方法を示すテストリグであるようです。

このコードをPHPに直接マッピングする際の問題は、PHPでメソッド名をオーバーロードできないことです。代わりに、showPartitions関数の2番目のバージョンの翻訳に集中する必要があります。 2引数バージョンが必要な場合は、接頭辞と開始パラメータにデフォルト値を使用することができます(PHPではオプションのパラメータが最後に来る必要があるため、これを行うにはパラメータの順序を変更する必要があります)。

ここで最も重要な機能翻訳で私の(未テスト)の試みです:これはクラスのメソッドであると考えられる場合

function showPartitions($prefix, $start, $finish, $numLeft) 
{ 
    if ($numLeft == 0 && $start == $finish) { 
     echo $prefix."\n"; 
    } else { 
     $prefix .= "|"; 
     for ($i = $start + 1; $i <= $finish; $i++) { 
      $prefix .= $i.","; 
      showPartitions($prefix, $i, $finish, $numLeft - 1); 
     } 
    } 
} 
+0

が、それは – OIS

+0

はどうもありがとうございます$ this-> showPartitionsで自身を呼び出す必要があります! :)それは正常に動作します。これはまさに私が望んでいたものです。唯一の間違いです:8行目に "$"を忘れました。$ prefix。= $ iでなければなりません。 – caw

+0

@OIS:もともと私はself ::と呼ばれる静的メソッドとして持っていましたが、OPはそれをクラスの一部としては望んでいなかったので、スタンドアロンの関数にしました。 @ marco92w:ありがとう、私はそれを修正するために編集しました。 –

関連する問題