Jump to content
Sign in to follow this  
elektron

Recursion issue?

Recommended Posts

elektron

I'm trying to solve a problem on rosetta code, and I run into this issue where AutoIt give me the error: recursion level exceeded. Can someone help?

Func main()
For $i = 0 To 1 Step 1
ConsoleWrite(F($i))
Next
ConsoleWrite(@LF)

For $i = 0 To 20 Step 1
ConsoleWrite(M($i))
Next
ConsoleWrite(@LF)
EndFunc

Func F($n)
If($n = 0) Then
Return 1
Else
Return $n - M(F($n-1));
EndIf
EndFunc

Func M($n)
If($n = 0) Then
Return 1
Else
Return $n - F(M($n-1));
EndIf
EndFunc

main()

Share this post


Link to post
Share on other sites
BrewManNH

It depends on what this is supposed to be doing. Right now you're calling the F and M functions thousands of times in a few seconds and it crashes the script.

If you've downloaded the full version of Scite4AutoIt3, you can go to the tools menu and use the "Trace: Add Func trace lines" tool, and then run your script, you'll see exactly what the problem is.


If I posted any code, assume that code was written using the latest release version unless stated otherwise. Also, if it doesn't work on XP I can't help with that because I don't have access to XP, and I'm not going to.
Give a programmer the correct code and he can do his work for a day. Teach a programmer to debug and he can do his work for a lifetime - by Chirag Gude
How to ask questions the smart way!

I hereby grant any person the right to use any code I post, that I am the original author of, on the autoitscript.com forums, unless I've specifically stated otherwise in the code or the thread post. If you do use my code all I ask, as a courtesy, is to make note of where you got it from.

Back up and restore Windows user files _Array.au3 - Modified array functions that include support for 2D arrays.  -  ColorChooser - An add-on for SciTE that pops up a color dialog so you can select and paste a color code into a script.  -  Customizable Splashscreen GUI w/Progress Bar - Create a custom "splash screen" GUI with a progress bar and custom label.  -  _FileGetProperty - Retrieve the properties of a file  -  SciTE Toolbar - A toolbar demo for use with the SciTE editor  -  GUIRegisterMsg demo - Demo script to show how to use the Windows messages to interact with controls and your GUI.  -   Latin Square password generator

Share this post


Link to post
Share on other sites
PhoenixXL

Your Main Funtion Calls Func F two times once with Parameter 0 ,F returns 1, and with Parameter 1 ...

Here all the Problem Goes When the Parameter is 1

This is Your Code

Return $n - M(F($n-1))

You Call 1-M(F(1-1))

Which Equals to 1-M(F(0))

F(0) will Return 1

and 1 will be passed as a Parameter to Func M

Then This Willl be the Code $n - F(M($n-1)) {In Func M with Parameter 1}

i.e. 1-F(M(1-1))

M(0) will Return 1 and Again , See Again F(1) will Be Called

THis WIll again Perform All These Functions Once Again..

Therez the Recursion

Edited by PhoenixXL

My code:

PredictText: Predict Text of an Edit Control Like Scite. Remote Gmail: Execute your Scripts through Gmail. StringRegExp:Share and learn RegExp.

Run As System: A command line wrapper around PSEXEC.exe to execute your apps scripts as System (LSA). Database: An easier approach for _SQ_LITE beginners.

MathsEx: A UDF for Fractions and LCM, GCF/HCF. FloatingText: An UDF for make your text floating. Clipboard Extendor: A clipboard monitoring tool. 

Custom ScrollBar: Scroll Bar made with GDI+, user can use bitmaps instead. RestrictEdit_SRE: Restrict text in an Edit Control through a Regular Expression.

Share this post


Link to post
Share on other sites
BrewManNH

That's pretty much what I already said in my post.


If I posted any code, assume that code was written using the latest release version unless stated otherwise. Also, if it doesn't work on XP I can't help with that because I don't have access to XP, and I'm not going to.
Give a programmer the correct code and he can do his work for a day. Teach a programmer to debug and he can do his work for a lifetime - by Chirag Gude
How to ask questions the smart way!

I hereby grant any person the right to use any code I post, that I am the original author of, on the autoitscript.com forums, unless I've specifically stated otherwise in the code or the thread post. If you do use my code all I ask, as a courtesy, is to make note of where you got it from.

Back up and restore Windows user files _Array.au3 - Modified array functions that include support for 2D arrays.  -  ColorChooser - An add-on for SciTE that pops up a color dialog so you can select and paste a color code into a script.  -  Customizable Splashscreen GUI w/Progress Bar - Create a custom "splash screen" GUI with a progress bar and custom label.  -  _FileGetProperty - Retrieve the properties of a file  -  SciTE Toolbar - A toolbar demo for use with the SciTE editor  -  GUIRegisterMsg demo - Demo script to show how to use the Windows messages to interact with controls and your GUI.  -   Latin Square password generator

Share this post


Link to post
Share on other sites
PhoenixXL

Well BrewMan

when i visited this Forum there was No Reply

But it took Time to Me for Finding the Correct and Exact Problem and I even Didn't Refresh the Page

Upon Finding the Soution I posted it n Found That U have Already Posted the Solution

Sorry for the Inconveniance

Regards

Phoenix XL


My code:

PredictText: Predict Text of an Edit Control Like Scite. Remote Gmail: Execute your Scripts through Gmail. StringRegExp:Share and learn RegExp.

Run As System: A command line wrapper around PSEXEC.exe to execute your apps scripts as System (LSA). Database: An easier approach for _SQ_LITE beginners.

MathsEx: A UDF for Fractions and LCM, GCF/HCF. FloatingText: An UDF for make your text floating. Clipboard Extendor: A clipboard monitoring tool. 

Custom ScrollBar: Scroll Bar made with GDI+, user can use bitmaps instead. RestrictEdit_SRE: Restrict text in an Edit Control through a Regular Expression.

Share this post


Link to post
Share on other sites
elektron

Thank you guys so much for the help. I haven't quite gotten to solving it yet, but I'm going to get on my windows PC tonight and work on it. Here's the problem that I'm solving on rosettacode. [blog='http://rosettacode.org/wiki/Mutual_recursion#AutoHotkey'][/blog]

Share this post


Link to post
Share on other sites

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
Sign in to follow this  

×