spionkaese
Software-Overclocker(in)
Hey Leute, ich hab grade ein kleines Problem und hoffe, mir kann jemand helfen:
Ich hab ein kleines Programm geschrieben, das theoretisch eine Fibonacci Zahl berechnen soll, und zwar mit mehreren Prozessen, um den Umgang damit zu lernen:
Theoretisch sollte also für jeden Durchlauf der Funktion ein Prozess geforkt werden.
Zumindest mit nur einem Prozess stimmt das Ergebnis, allerdings nicht mehr mit mehreren:
Mal von den komischen Ausgaben unten abgesehen ( ), wo liegt der Fehler?
Ich bin mir ziemlich sicher (und Wikipedia auch) das die 3. Fibonacci-Zahl NICHT 7008 ist
Die Ergebnisse mit mehreren Prozessen verändern sich jedes mal, ich gehe also davon aus, das ich irgendwie die PID als Ergebnis nehme, aber wieso
Ich hoffe mir kann jemand helfen
Ich hab ein kleines Programm geschrieben, das theoretisch eine Fibonacci Zahl berechnen soll, und zwar mit mehreren Prozessen, um den Umgang damit zu lernen:
Code:
require 'win32/process.rb'
def fib(n,t) #t: multithreaded?
if(t)
if n == 0
return 0
elsif n == 1
return 1
else
fork do
fib(n-1,t).to_i+fib(n-2,t).to_i
end
end
else
if n == 0
return 0
elsif n == 1
return 1
else
return fib(n-1,t).to_i+fib(n-2,t).to_i
end
end
end
a = Time.now
0.upto(32) { |i|
puts fib(i,true).to_s+"\n"
}
puts Time.now-a
exit
Zumindest mit nur einem Prozess stimmt das Ergebnis, allerdings nicht mehr mit mehreren:
Code:
0
1
7008
4204
5300
6388
0.004 #Kommentar: hier endet die eigentliche Ausgabe des Skripts!
0
1
0
false
false
false
0.0
0
1
false
false
-1
false
0.0
0
1
false
-1
false
false
0.0
0
1
false
false
false
-1
0.0
Ich bin mir ziemlich sicher (und Wikipedia auch) das die 3. Fibonacci-Zahl NICHT 7008 ist
Die Ergebnisse mit mehreren Prozessen verändern sich jedes mal, ich gehe also davon aus, das ich irgendwie die PID als Ergebnis nehme, aber wieso
Ich hoffe mir kann jemand helfen
Zuletzt bearbeitet: