gpt4 book ai didi

perl - Perl挑战算法中的神秘“数组中未初始化的值”

转载 作者:行者123 更新时间:2023-12-03 23:34:15 25 4
gpt4 key购买 nike

目前正在学习Perl,并试图解决一个小难题,以便从前4,000,000个斐波纳契项中找到偶数项的总和。我创建了一个似乎有效的Fibonacci数组,然后尝试了不同的方法以抛出奇数值项,并在尝试对所得数组求和时不断遇到错误,并得到以下报告:

Use of uninitialized value in addition (+) at prob2_3.plx line 23


这是我所拥有的:

#!/usr/bin/perl -w
# prob2_2.plx
use warnings;
use strict;

my @fib; my $i; my $t; my $n;
@fib = (1, 2);



for ($i=2; $i<4000000; $i++) {
my $new= ( $fib[$i-1] + $fib[$i-2] );
push @fib, $new;}


for ($t=3; $t<4000000; $t++) {
if (($fib[$t] % 2) != 0 ) {
delete $fib[$t]; } }

my $total = 0;

for ($n=1; $n<$#fib; $n++) {
$total += $fib[($n+1)];}

print $total;

最佳答案

该警告表示您正在向某些内容添加undefdelete $fib[$t];是执行$fib[$t] = undef;的不好方法,您稍后将其添加到$total中。



您还有至少另一个错误:

前两个Fibonacci numbers是0和1,而不是1和2。



您有一个主要问题:

第4,000,000个Fib数将非常大,太大而无法容纳两倍。

仅供参考,

第10000有2090个数字:20793608237133498072112648988642836825087036094015903119682945866528501423455686648927456034305226515591757343297190158010624794267250973176133810179902738038231789748346235556483191431591924532394420028067810320408724414693462849062668387083308048250920654493340878733226377580847446324873797603734794648258113858631550404081017260381202919943892370942852601647398213554479081823593715429566945149312993664846779090437799284773675379284270660175134664833266377698642012106891355791141872776934080803504956794094648292880566056364718187662668970758537383352677420835574155945658542003634765324541006121012446785689171494803262408602693091211601973938229446636049901531963286159699077880427720289235539329671877182915643419079186525118678856821600897520171070499437657067342400871083908811800976259727431820539554256869460815355918458253398234382360435762759823179896116748424269545924633204614137992850814352018738480923581553988990897151469406131695614497783720743461373756 2186851068568260906963398154909212537145372418669116042505973537478237332681781821985092402269558264160166900847498160728435824886131848299053831501800478443537515542015738331055219809981238332532612286898240517778465884610797908078283671323847984517940110765690575221586803789615321608583872238829743804839319295412221008003135806885850025988795664632214278204484925650731065958088374016489964235633861097820456341224678729218456064091743606356182168838125623216644428229525375774927153653211342045306867424354545051032697681443701184949063902549349423589040315098773697224370533831653603885951169802459279352259015376349256548723808771830083010745694440024264364147569050945350728047646844921056800247399144905559043913692186963870929181892461571034503870502293006032416114107074539600801709282779518347632167052424858208014238665266338160829214428830954632590804718193292017101478280252213856563402074897963176632788722076077910344317001127535588134788887275038253890668230986833556957181378678829 82111710796422706778536913192342733364556727928018953989153106047379741280794091639429908796650294603536651238230626

第20000有4180个数字:15643443471097638497347653640727434581620509468559158831812454174045808038524338191274779345041433161036712377970871840524871575898463953143351017926326668833011884916988503772533837358120179430597822688352803606187544669324061926749041828685947384995004151665996027373007937120120462754853694956000194950041260395952175560976035108368996828278276268512744178385659584648815498881545115656877151620815270274211679267105921694057643728720232657918512795265210977398020477967380138855126162672732200240962147801325674797116435673725178082452625605624266516593910138379884765061246490925383078273262859646372683280297657079846071209615997963367146323624971699524131633705583112836129610335888363343524328603322228786489505081543311656786173730979396476480155527826383926549385517242893860175669329820654413920253692137346767398450689569662785367572359774211275650554670609065333830016259259785954721810911510627985072867987547284503582660897446164659142557997644315085594858536 3784108252178032271074802954600198046099069599908704661773131760849831642816417996715035093937470220182181889534962185895489306103459895434193985097367387094618307972802910562478216182762666136701767368192225760417881015443846208021779448910967838688115382683807583205819115313370404262815641934451691786736975534513561898691764200452150953843620429861813036340139554793317764376016113563835708864901446935800651830040403643111314377796939158424693424580073980913561974459880897762824530994153792843943160866552330889496731060052949844694393366546840630629276294240978609784787524001403635391792815622044665057951409203125430805931493161872669237664098744645927633119695078006366417175111008764464977305821311764064008510055292787840451627946143750385701739893709704260725805961225787830700700208691321092262676072834290127276840897490600792122744624255226136250547175172290655823553370907054810978951992040552164783616415667530478409778243586516564040189710782885912183152112656744661171607707576925 7072773697947064329836969249852382976202348037425889031090020976240691949742160088733357875561841760194799534815496104106903184713919847662253483806138312440578732122855388348848736018217032877013531004653902335692761900988709302797685265501972628217528866551995479526195626503247164073793787381643388365618488630255600890924552511767690989186316859159306438477097458585889829326938198129884953178437411315486719927412151054551726325421747462698125767761987300812744880048122138953746796038485281452086680809803469350470844184375258620810652745992631459076192613797545486775651410699327289089628593588395142531659083933746399666161863597357735290387376161440280731398703030590410957840047591721635117677190494658658256770952605314604687704388833897300447300322491720569722311756874534871145435101596346787454258165870310592717473670917638475152605474446188958081898150393481484970581519902582271877141251593259282483539345792009117894084860435326938689664322383123823631494470354941767039585133484331 3424688061679011669280526389994233115706189811373488915388180272165963004919891812315981511236146510432056564744909231099825952358804464206787003367175349143817295781131697530460839817524651569337902880208418806880838881666593628966489116087163735799448542359973849863029026088215666890266763712687033032074068277379252747813019864807624625944203986376078939610108249793954392253008329316265401792185583459475584721599068739989237674325042788384194790680937789769972764165924212232357196539050713922957353982728518263506456056434704171557195001851435948043743220101895451362055688562765598063167895334506120979001803994409151396470604593219932545661032550115909024081160187229962679568265554349554093909517280228152094120272483530629829115446740071472493266972750107881006669583149658103204327366159628981755853209931288710465528420688675573410073833991808074490301597976726055308352441572561092685275781723143582551795896053353754140820465755571226363643914078619228245294412610038660980664045265419 12783214030236752423547997110159548536582622929575859635210831021463363332532502412193578592457118234067116894159316798758933206918936334540039454055299199101076302263831614132510576874528929742319396129011617501

即使是第10,000个也无法容纳两倍,而第20,000个则是第10,000个的两倍,所以想象一下第4,000,000个将有多大!



风格问题:

my $i; for ($i=2; $i<4000000; $i++)


比这更难读

for my $i (2..$N-1)


顶部带有以下内容,以避免在任何地方重复该数字:

my $N = 4_000_000;

关于perl - Perl挑战算法中的神秘“数组中未初始化的值”,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6643983/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com