Avatar billede mihl Nybegynder
30. august 2004 - 15:24 Der er 13 kommentarer og
2 løsninger

Fakultet i VB

Jeg har følgende funktion til at beregne fakulteten i C++.... Jeg skal bare bruge noget tilsvarende til VB
--------------------------
int fakulitet(int n)
{
  int result=1;
  if (n>1)
      result = n*fakulitet(n-1);
 
  return result;
}
--------------------------
Avatar billede arne_v Ekspert
30. august 2004 - 15:29 #1
Prøv:

Function fak(n As Integer) As Integer
  Dim res,i
  res = 1
  For i = 1 to n
      res = res * i
  Next
  fak = res
End Function
Avatar billede arne_v Ekspert
30. august 2004 - 15:30 #2
Bedre:

Function fak(n As Integer) As Long
  Dim res As long
  Dim i As Integer
  res = 1
  For i = 1 to n
      res = res * i
  Next
  fak = res
End Function
Avatar billede arne_v Ekspert
30. august 2004 - 15:31 #3
Fakultet er ikke særligt optimalt at udregne rekursivt.
Avatar billede overchord Nybegynder
30. august 2004 - 15:32 #4
function Fakultet(byval x as integer)

dim i as integer
dim tempsum as long
tempsum = x
for i = (x-1) to 1 step-1
    if i > 1 then
      tempsum = tempsum * i
    end if
next i
fakultet = tempsum
end function
Avatar billede mihl Nybegynder
30. august 2004 - 15:32 #5
Nej..... Det synes jeg heller ikke.... Men det mener min lærer :(
Avatar billede overchord Nybegynder
30. august 2004 - 15:33 #6
hov lidt sent paa den der :-)
Avatar billede arne_v Ekspert
30. august 2004 - 15:47 #7
Jeg ved ikke engang om VB understøtter rekursivitet, men hvis ja så må det være:

Function fak(n As Integer) As Long
  Dim res As Long
  If n > 1 Then
    res = n * fak(n - 1)
  Else
    res = 1
  End If
  fak = res
End Function

  Dim res As long
  Dim i As Integer
  res = 1
  For i = 1 to n
      res = res * i
  Next
  fak = res
End Function
Avatar billede arne_v Ekspert
30. august 2004 - 15:50 #8
Function fak(n As Integer) As Long
  Dim res As Long
  If n > 1 Then
    res = n * fak(n - 1)
  Else
    res = 1
  End If
  fak = res
End Function

(resten var leftover fra copy paste)
Avatar billede arne_v Ekspert
30. august 2004 - 15:51 #9
Og et svar fra mig
Avatar billede tubber Juniormester
30. august 2004 - 18:58 #10
Kommer også lige et forslag her:

'factorial function
Public Function Factorial(ByVal Factor As Byte) As Variant

On Error GoTo ErrorHandler
If Factor = 0 Then
Factorial = 1
Else
Factorial = Factor * Factorial(Factor - 1)
End If
Exit Function

ErrorHandler:
MsgBox Err.Description
End Function

Private Sub Form_Load()
MsgBox Factorial(3)
End Sub
Avatar billede tubber Juniormester
30. august 2004 - 18:59 #11
Private Sub Form_Load()
MsgBox Factorial(x)
End Sub
Avatar billede tubber Juniormester
30. august 2004 - 18:59 #12
hov

Private Sub Form_Load()
MsgBox Factorial(x) 'X er det tal man skal tage fakulteten af
End Sub
Avatar billede tubber Juniormester
30. august 2004 - 19:02 #13
Avatar billede sjh Nybegynder
31. august 2004 - 01:31 #14
Hvis det skal være efter den c++ ting du har lavet, så må det være sådan..


Function fakulitet(n As Integer) As Integer  '<-- int fakulitet(int n) {
Dim result As Integer: result = 1            '<-- int result=1;
  If n > 1 Then result = n * fakulitet(n - 1) '<-- if (n>1) result = n*fakulitet(n-1);
  fakulitet = result                          '<-- return result; }
End Function
Avatar billede martin_moth Mester
03. september 2004 - 11:29 #15
Lukketid?
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester