[fpc-pascal] inline function vs recursive function

Guionardo Furlan guionardo at gmail.com
Tue Feb 7 16:14:20 CET 2012


Inline: http://www.freepascal.org/docs-html/ref/refsu64.html
Recursion: http://wiki.freepascal.org/Recursion

2012/2/7 ik <idokan at gmail.com>:
> On Mon, Feb 6, 2012 at 21:58, Sven Barth <pascaldragon at googlemail.com>
> wrote:
>>
>> On 06.02.2012 19:51, ik wrote:
>>>
>>> Hello,
>>>
>>> Let's say I have a function that some of it's code (or all) can be used
>>> in more then one location inside the function itself.
>>> I can make a nested function with the code and set it to inline, make it
>>> normal, or make a recursion with it.
>>>
>>> What's the best practice in your opinion to take, and why ?
>>
>>
>> Recursion won't help you here, because recursion is something like the
>> following:
>>
>> function factorial(aValue: LongInt): LongInt;
>> begin
>>  if aValue <= 1 then
>>    Result := 1
>>  else
>>    Result := factorial(aValue - 1) * aValue;
>> end;
>>
>> Whether you inline the function or not depends on whether it's a complex
>> function or not. Something like
>>
>> function foo(aValue: LongInt): LongInt;
>> begin
>>  Result := aValue * 6 + 5 - SomeParam;
>> end;
>>
>> can definitely be declared inline. You just need to keep in mind that when
>> inlining a function the function call will be replaced by the
>> function's/procedure's body so the code size will increase (no, you don't
>> need to pay attention for duplicate variable names).
>
>
> ‎Thanks Sven, then I think I'll work with the nested function as a "normal"
> function rather then inline or recursive one.
>
>>
>>
>> Regards,
>> Sven
>>
>
> Ido
>
>>
>> _______________________________________________
>> fpc-pascal maillist  -  fpc-pascal at lists.freepascal.org
>> http://lists.freepascal.org/mailman/listinfo/fpc-pascal
>
>
>
> _______________________________________________
> fpc-pascal maillist  -  fpc-pascal at lists.freepascal.org
> http://lists.freepascal.org/mailman/listinfo/fpc-pascal



-- 
Timeo hominem unius libri
Cogito ergo sum - Carpe diem

[]s
Guionardo Furlan
http://guionardo.blogspot.com
http://www.guionardofurlan.com.br



More information about the fpc-pascal mailing list