MathGroup Archive 2002

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

Search the Archive

RE: NestWhile

  • To: mathgroup at smc.vnet.net
  • Subject: [mg32546] RE: [mg32519] NestWhile
  • From: "Wolf, Hartmut" <Hartmut.Wolf at t-systems.com>
  • Date: Sat, 26 Jan 2002 04:08:10 -0500 (EST)
  • Sender: owner-wri-mathgroup at wolfram.com

> -----Original Message-----
> From: Tom De Vries [mailto:tdevries at shop.westworld.ca]
To: mathgroup at smc.vnet.net
> Sent: Friday, January 25, 2002 8:58 AM
> To: mathgroup at smc.vnet.net
> Subject: [mg32546] [mg32519] NestWhile
> 
> 
> Hello!
> 
> I know this is a simple question, hope someone can help me out.....
> 
> If I define the function
> 
> f[n_] := If[EvenQ[n], n/2, 3n + 1]
> 
> 
> I can then apply NestList and generate a nice number loop......
> 
> NestList[f, 7, 23]
> 
> I want to use NestWhileList and stop when the generated 
> number is a 1.  How
> do I do that?
> 
> Thanks for the help,
> 
> Sincerely,
> 
> Tom De Vries 
> 
> 
Tom,

you might search for

NestWhileList[f, 7, {4, 2, 1} =!= {##} &, 3]
{7, 22, 11, 34, 17, 52, 26, 13, 40, 20, 10, 5, 16, 8, 4, 2, 1}

or use just

NestWhileList[f, 7, # > 1 &]

(the only differ for n=1 and n=2)

No you can do interesting things like

TableForm[
  Partition[(#1 -> Length[NestWhileList[f, #1, # > 1 &]] &) /@ Range[200], 
    5], TableSpacing -> {1, 1}]

ListPlot[Length[NestWhileList[f, #, # > 1 &]] & /@ Range[2000]]

ListPlot[Max[NestWhileList[f, #, # > 1 &]] & /@ Range[2000]]

pl = ListPlot[NestWhileList[f, #, # > 1 &], PlotJoined -> True, 
          PlotRange -> All, 
          DisplayFunction -> Identity] & /@ 
             (Range[#1, #1 - 2 #2 + 1, -1] &)[2^19 - 1, 5];
Show[GraphicsArray[Partition[pl, 2]]]

--
Hartmut



  • Prev by Date: Arbitrary selection of a particular cube root of a negative number
  • Next by Date: Re: Unloading packages
  • Previous by thread: Re: NestWhile
  • Next by thread: RE: NestWhile