PHP kodu için Java kodu Translate (13 hat)

1 Cevap java

simonn helped me to code an veyadered içindeteger partition function here. O iki işlevi gönderdi: bir fonksiyon, sadece bölümleriçinde sayısını geri verir, ikiçindeci fonksiyon, bir liste olarak bölümleri verir.

Zaten PHP Java ilk işlev çevirmek içiçinde idvardır ettik:

Ne yazık ki, ikiçindeci işlevi çevirmek içiçinde yönetemez. Herkes bana yardımcı ve benim içiçinde bu küçük işlevi çevirir misiçindeiz?

public class Partitions2
{
    private static void showPartitions(içindet sizeSet, içindet numPartitions)
    {
        showPartitions("", 0, sizeSet, numPartitions);
    }

    private static void showPartitions(Striçindeg prefix, içindet start, içindet fiçindeish,
                içindet numLeft)
    {
        if (numLeft == 0 && start == fiçindeish) {
                System.out.priçindetln(prefix);
        } else {
                prefix += "|";
                fveya (içindet i = start + 1; i <= fiçindeish; i++) {
                        prefix += i + ",";
                        showPartitions(prefix, i, fiçindeish, numLeft - 1);
                }
        }
    }

    public static void maiçinde(Striçindeg[] args)
    {
        showPartitions(5, 3);
    }
}

Çözüm birçok fonksiyonları ile tek işlevi yeriçindee bir sınıf olacağını çok iyi olurdu.

Şimdiden çok teşekkür ederiz! Ve tekrar teşekkürler bu büyük yanıt içiçinde simonn içiçinde!

1 Cevap

Muhtemelen sadece diğer yöntemi çağırmak için nasıl gösteren bir test kulesi olacak gibi görünüyor, ana yöntem gerekmez.

PHP doğrudan bu kodu haritalama sorun PHP yöntem adlarını aşırı edemezler. Bunun yerine showPartitions fonksiyonunun ikinci versiyonu çeviri konsantre olmalıdır. Eğer öneki için varsayılan değerleri kullanmak ve parametreleri başlayabilirsiniz 2-argüman sürümüne ihtiyacınız varsa (son gelmeli çünkü PHP isteğe bağlı parametreleri bunu parametre sırasını değiştirmek gerekir).

Burada en önemli işlevi çeviri benim (denenmemiş) girişimi:

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);
        }
    }
}