2 Stimmen

Wie kann ich in Perl doppelte Faktorzahlen berechnen?

Angesichts der Diskussion in Wikipedia über Doppelt faktoriell s, kann jemand vorschlagen, wo ich eine bignum Version von diesem für Perl finden könnte, oder vorschlagen, wie es geschrieben werden könnte?

3voto

dsm Punkte 10073

Perl kann mit allem umgehen, was Ihr C-Compiler kann, für alles, was größer ist, sollten Sie Math::BigInt .

Ich empfehle Ihnen zu lesen perlnumber .

Eine Definition für die doppelte Fakultät (in Perl Golf):

sub f{$_[0]&&$_[0]>=2?$_[0]*f($_[0]-2):1}

2voto

Kevin Haines Punkte 2422

Hier gibt es viele alternative Ansätze zur Umsetzung Schnelle faktorielle Funktionen . Der Poor Man's Algorithmus könnte eine gute Wahl für Sie sein, da er keine Big-Integer-Bibliothek verwendet und leicht in jeder Computersprache implementiert werden kann und sogar bis zu 10000! schnell ist.

Die Übersetzung in Perl bleibt als Übung für den OP :-)

1voto

brian d foy Punkte 124323

Perl 5.8 und spätere Versionen werden mit dem Bignum Paket. Verwenden Sie es einfach Ihr Skript und es kümmert sich um den Rest:

use bignum;

Ich spreche darüber ein wenig in Perl beherrschen wenn ich den Faktor im Kapitel "Profiling" verwende.

1voto

Axeman Punkte 29362

Die Antwort von dsm ist zwar richtig, aber die real Die Berechnung von Faktoren in Perl, unabhängig davon, ob Sie den Algorithmus von dsm (mit oder ohne Golf) verwenden, ist wie folgt speichern es. Wenn Sie sie häufig aufrufen, sollten Sie jede rekursive mathematische Funktion auswendig lernen.

use Memoize;
memoize( 'fact2' );

sub fact2 {$_[0]&&$_[0]>=2?$_[0]*fact2($_[0]-2):1}

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X