VBS Fakultät?

3 Antworten

Du musst das i ja in jedem Schleifendurchlauf um 1 reduzieren. Und dein Ergebnis solltest du irgendwie anders nennen. Und ich denke, die while-Bedingung ist falsch herum, es sollte while i >1 sein, bei i=1 sollte die Schleife abbrechen.

ArthurSliwa 
Fragesteller
 03.01.2018, 20:55

Könntest du vielleicht mal so grob den Code von oben verändern?

Wäre dir sehr dankbar.

Inzwischen scheitere ich daran, das Ergebnis anders zu nennen.

0
PhotonX  03.01.2018, 20:59
@ArthurSliwa

Ich kennen VBS nicht, aber vorausgesetzt deine Syntax stimmt, irgendwie so:

dim i

i = InputBox("Bitte geben sie eine Zahl ein", "Fakultaet")

dim fak

fak = 1

Do while i > 1

fak = fak*i

i=i-1

loop

MsgBox "Die Fakultät deiner Zahl ist: " & fak , 0, "Fakultaet"

2
PhotonX  03.01.2018, 21:08
@ArthurSliwa

Das hätt ich nicht erwartet! Kann ich jetzt in mein CV schreiben, dass ich VBS kenne? :D

0

Gute Lösungen hast du bereits. In der Schleifenvariante kommst du nicht um eine weitere Variable umher. Mit einer zählst du bis zur Obergrenze oder von der Obergrenze bis nach eins herunter. In der anderen merkst du dir die Zwischenergebnisse der Fakultät.

Merkregel: Lieber eine Variable zu viel als zu wenig verwenden.

Um noch produktiv etwas zu ergänzen, zeige ich dir den rekursiven Ansatz.

' Berechnet die Fakultät rekursiv
Function FakultaetRek(ByVal n)
	FakultaetRek = n
	if n > 2 then _ 
		FakultaetRek = FakultaetRek * FakultaetRek(n-1)
End Function

Und nochmal meine Lösung ohne Rekursion:

' Berechnet die nte Fakultät
Function Fakultaet(ByVal n)
	Dim i
	Fakultaet = 1
	For i=2 To n 
		Fakultaet = Fakultaet * i
	Next 
End Function
Woher ich das weiß:Berufserfahrung – Programmierer

Versuchs mal so:

dim i,n,f

n = InputBox("Bitte geben sie eine Zahl ein", "Fakultaet")

f = 1

for i = 1 to n

f = f * i

next

MsgBox "Die Fakultät deiner Zahl ist: " & f , 0, "Fakultaet"
Woher ich das weiß:Berufserfahrung – Softwareentewickler / Unternehmensberater bei CSDIT iR