Beefy Boxes and Bandwidth Generously Provided by pair Networks
good chemistry is complicated,
and a little bit messy -LW
 
PerlMonks  

RE: RE: RE: RE: RE: Answer: How can I add all the numbers in an array with out doing a foreach loop?

by Adam (Vicar)
on Jun 10, 2000 at 00:46 UTC ( [id://17433]=note: print w/replies, xml ) Need Help??


in reply to RE: RE: RE: RE: Answer: How can I add all the numbers in an array with out doing a foreach loop?
in thread How can I add all the numbers in an array with out doing a foreach loop?

Its unfortunate, KM, that you didn't really read the question, or my posts for that matter. You might have noticed that I was not putting you down or saying that your answer sucked. I was merely pointing out that you gave an answer that ignored the question, followed by one that didn't. As for why I hadn't posted my own answer? Thats because I liked your second answer. But you want one from me that doesn't use a loop? Ok. I'll use recursion then:
sub addArray{ shift(@_) + addArray(@_) if(@_) } $total = addArray( 1, 3, 8, 15, 7, 5, 3 )

Update: Two other things KM, I notice that you voted -- on my original comment. I'm not sure why. Nothing I said in that post was incorrect or rude. I also have noticed that my recursive answer is similar to the one that Btrott posted. I'm not sure why I should care, but I didn't want you to think I had copied it, as I had not read it when I first posted this. Cheers.

  • Comment on RE: RE: RE: RE: RE: Answer: How can I add all the numbers in an array with out doing a foreach loop?
  • Download Code

Replies are listed 'Best First'.
RE (6) Adam: Answer: How can I add all the numbers in an array with out doing a foreach loop?
by nuance (Hermit) on Jun 10, 2000 at 04:07 UTC
    Recursion is a looping construct as well. As everybody keeps pointing out there isn't really a way to do this without some kind of loop going on somewhere.

    Nuance

      Sorry Nuance, Recursion is NOT a loop.
      Recursion works by building up the stack, delaying evaluation until the end. A loop evaluates as it goes. There is a big difference between the two.

      Think about it this way: The recursive method that I posted says to add the first number to the sum of the other numbers. That can't be done until the sum of the other numbers is known, so it puts the number on the stack and trys to sum the other numbers by the same method. It does this, pushing the list onto a stack, until there is only one number left, then it sums the stack. This is not a loop. Its not even close.

        Some programming languages optomize tail-recursion down to a loop (to prevent the procedure call/stack overhead). So at least I would say that tail-recursion is a looping construct (or at least very close to one). Also some languages (ML, Prolog) have no standard looping constructs (while, for, etc..) so all looping in those languages is implemented with recursion. So in at least those languages recursion is a looping construct.

        The call is harder to make in Perl, since I don't believe it optomizes tail-recursion down to a loop, and it does have normal looping operators. There are cases where recursion is clearly not a looping construct, but I must say that in some instances recursion clearly is a looping construct.

        Well, I disagree with you here. And, so do the people I asked for opinions. Recursion is a looping construct. Even your explination is a loop. You can not push things onto a stack and then evaluate what is on that stack incrementally without a loop. No need to really continue this, but after trying to find anyone else I know to have the same opinion as you, I stand by everyone elses answers that this can't be done without looping, and that recursion is indeed a looping construct. Just take a pencil and paper and draw out a flow of the snippet you gave, you will see the obvious loop.

        Cheers,
        KM

Log In?
Username:
Password:

What's my password?
Create A New User
Domain Nodelet?
Node Status?
node history
Node Type: note [id://17433]
help
Chatterbox?
and the web crawler heard nothing...

How do I use this?Last hourOther CB clients
Other Users?
Others chilling in the Monastery: (3)
As of 2025-06-23 03:35 GMT
Sections?
Information?
Find Nodes?
Leftovers?
    Voting Booth?

    No recent polls found

    Notices?
    erzuuliAnonymous Monks are no longer allowed to use Super Search, due to an excessive use of this resource by robots.