MathGroup Archive 2005

[Date Index] [Thread Index] [Author Index]

Search the Archive

Re: Finding length in recursive definition?

  • To: mathgroup at smc.vnet.net
  • Subject: [mg60924] Re: Finding length in recursive definition?
  • From: "Scout" <mathem at tica.org>
  • Date: Tue, 4 Oct 2005 01:24:53 -0400 (EDT)
  • References: <dhlcj2$d16$1@smc.vnet.net> <dhntbj$1j9$1@smc.vnet.net> <dhqp87$g8$1@smc.vnet.net>
  • Sender: owner-wri-mathgroup at wolfram.com

Hi Peter,
I hope you will accept this simple trick ;-)

In[]:= DownValues[f][[-3]]/._[_[_[n_]],r_]:>n

    ~Scout~

> Scout schrieb:
>> Hi Jose,
>> If I've well understood your question
>> about how many values of a recursive function f[] are stored in memory,
>> you can try this:
>>
>>     Length[DownValues[f]] - 1
>>
>> where -1 counts the definition of f[] itself.
>>
>>     ~Scout~
>>
>> "Jose Reckoner"
>>
>>>I have something like:
>>>f[1] = 1
>>>f[2] = 3
>>>f[n_] := f[n] = f[n - 1] + f[n - 2]
>>>
>>>and in the course of work, f[n] gets evaluated an unknown number of
>>>times resulting in
>>>
>>>
>>>>>?f
>>>
>>>f[1] = 1
>>>f[2] = 3
>>>f[3] = 4
>>>f[n_] := f[n] = f[n - 1] + f[n - 2]
>>>
>>>I want to figure out the greatest integer n such that f[n] has already
>>>been computed and is stored. In this case, it is 3.
>>>
>>>How can I do this?
>>>
>>>Thanks!
>>>
>>>Jose
>>>
>>
>>
>
> Hi ~Scout~,
>
> what would you do for this function:
>
> In[1]:=
> Clear[f];
> f[1]=1; f[2]=1;
> f[n_Integer?EvenQ]:=f[n]=1+f[n/2];
> f[n_]:=f[n]=f[n-1]-1;
>
> In[5]:= f[17]
> Out[5]= 3
>
> In[6]:= Definition[f]//InputForm
> Out[6]//InputForm=
> f[1] = 1
> f[2] = 1
> f[4] = 2
> f[8] = 3
> f[16] = 4
> f[17] = 3
> f[(n_Integer)?EvenQ] := f[n] = 1 + f[n/2]
> f[n_] := f[n] = f[n - 1] - 1
>
> ?
>
> Peter
> 


  • Prev by Date: Re: ImplicitPlot in 3D of several equations
  • Next by Date: Re: BinCounts
  • Previous by thread: Re: Finding length in recursive definition?
  • Next by thread: Re: Finding length in recursive definition?