Jump to content

Recommended Posts

Posted

Recursion ver.

$start = ""
MsgBox(0, "",_fibo(40) &@CRLF &"Spend: " &TimerDiff($start) &" Sec")

Func _fibo($f)
$start = TimerInit()
If $f <= 1 Then
Return 1
Else
Return _fibo($f - 1) + _fibo($f - 2)
EndIf
EndFunc

Why is it run so slowly.....??

************************************************************

For ver.

$start = ""
MsgBox(0, "", _fibloop(40) &@CRLF &"Spend: " &TimerDiff($start) &" Sec")
Func _fibloop($s)
$start = TimerInit()
$a = 1
$b = 1
For $i = 2 To $s
$temp = $a
$a = $a + $b
$b = $temp
Next
Return $a
EndFunc

Be Fast!! ;)

Posted

Search the forum and you will find a lot of scripts for Fibonacci.

Maybe they show what to change in your code.

My UDFs and Tutorials:

  Reveal hidden contents

 

Posted

You mean static not global.

UDF List:

  Reveal hidden contents

Updated: 22/04/2018

  • Moderators
Posted

Underdogger,

This is as fast as I can get a recursive one to run: :)

Global $iTotal = 0

$start_rec = TimerInit()
_Fibo_Rec(1, 1, 1, 40)
$nTime_Rec = TimerDiff($start_rec)

Func _Fibo_Rec($iCount, $iCurr, $iPrev, $iLimit)

    $iNext = $iCurr + $iPrev
    $iTotal = $iNext
    If $iCount + 1 = $iLimit Then Return
    _Fibo_Rec($iCount + 1, $iNext, $iCurr, $iLimit)

EndFunc   ;==>_Fibo_Rec

$start_Loop = TimerInit()
MsgBox(0, "", _fibloop(40) & @CRLF & TimerDiff($start_Loop) & " ms" & @CRLF & @CRLF & $iTotal & @CRLF & $nTime_Rec & " ms")

Func _fibloop($s)
    $a = 1
    $b = 1
    For $i = 2 To $s
        $temp = $a
        $a = $a + $b
        $b = $temp
    Next
    Return $a
EndFunc   ;==>_fibloop

There is a lot of overhead in recursive functions as the whole stack has to be saved and reloaded for each call - so I am not really surprised that it takes longer. ;)

M23

Public_Domain.png.2d871819fcb9957cf44f4514551a2935.png Any of my own code posted anywhere on the forum is available for use by others without any restriction of any kind

Open spoiler to see my UDFs:

  Reveal hidden contents

 

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
  • Recently Browsing   0 members

    • No registered users viewing this page.
×
×
  • Create New...