[lnkForumImage]
TotalShareware - Download Free Software

Confronta i prezzi di migliaia di prodotti.
Asp Forum
 Home | Login | Register | Search 


 

Forums >

comp.lang.python

Recursive function won't compile

bc1891

4/2/2008 8:24:00 PM

#include <stdio.h>
#include <stdlib.h>

def RecursiveFact(n):
if(n>1):
return n*RecursiveFact(n-1)
else:
return 1

fact = RecursiveFact(31)
print fact

fact = "End of program"
print fact


.......but yet it still gives the right answer. How is this possible?
6 Answers

dj3vande

4/2/2008 8:52:00 PM

0

In article <be71dc98-63c0-4a56-80e8-7d83b2d3e882@u36g2000prf.googlegroups.com>,
<bc1891@googlemail.com> wrote:

(Subject: Recursive function won't compile)

>#include <stdio.h>
>#include <stdlib.h>
>
>def RecursiveFact(n):

>......but yet it still gives the right answer. How is this possible?

Possibly because it gives the right answer in a different language than
it fails to compile in?


dave

--
Dave Vandervies dj3vande at eskimo dot com
A violent rewrite could produce something worthwhile; as it is you need enough
experience to not need the book to be able to read it. Well, that makes sense
to me, anyhow. --CBFalconer in comp.lang.c

ajaksu

4/2/2008 8:57:00 PM

0

On Apr 2, 5:23 pm, bc1...@googlemail.com wrote:
> #include <stdio.h>
> #include <stdlib.h>
>
> def RecursiveFact(n):
>     if(n>1):
>         return n*RecursiveFact(n-1)
>     else:
>         return 1
>
> fact = RecursiveFact(31)
> print fact
The output is 8222838654177922817725562880000000 and is correct. But
the "#include"s tell me you're a bit confused. Have you tried running
"python yourscript.py" (where "yourscript.py" is the filename you
saved the above program to)?

HTH,
Daniel

Diez B. Roggisch

4/2/2008 9:00:00 PM

0

bc1891@googlemail.com schrieb:
> #include <stdio.h>
> #include <stdlib.h>
>
> def RecursiveFact(n):
> if(n>1):
> return n*RecursiveFact(n-1)
> else:
> return 1
>
> fact = RecursiveFact(31)
> print fact
>
> fact = "End of program"
> print fact
>
>
> ......but yet it still gives the right answer. How is this possible?

Given that you obviously don't use python, but some weird cross-breed
beteween python and C - who are we to judge the semantics of that chimera?

Diez

George Sakkis

4/2/2008 11:19:00 PM

0

On Apr 2, 5:00 pm, "Diez B. Roggisch" <de...@nospam.web.de> wrote:
> bc1...@googlemail.com schrieb:
>
>
>
> > #include <stdio.h>
> > #include <stdlib.h>
>
> > def RecursiveFact(n):
> > if(n>1):
> > return n*RecursiveFact(n-1)
> > else:
> > return 1
>
> > fact = RecursiveFact(31)
> > print fact
>
> > fact = "End of program"
> > print fact
>
> > ......but yet it still gives the right answer. How is this possible?
>
> Given that you obviously don't use python, but some weird cross-breed
> beteween python and C - who are we to judge the semantics of that chimera?
>
> Diez

Seems like a bad belated April Fool's day joke to me.

George

Keith Thompson

4/3/2008 3:09:00 AM

0

"Diez B. Roggisch" <deets@nospam.web.de> writes:

>> #include <stdio.h>
>> #include <stdlib.h>
>>
>> def RecursiveFact(n):
>> if(n>1):
>> return n*RecursiveFact(n-1)
>> else:
>> return 1
>>
>> fact = RecursiveFact(31)
>> print fact
>>
>> fact = "End of program"
>> print fact
>>
>>
>> ......but yet it still gives the right answer. How is this possible?
>
> Given that you obviously don't use python, but some weird cross-breed
> beteween python and C - who are we to judge the semantics of that
> chimera?

What do you mean? Aren't these:

#include <stdio.h.
#include <stdlib.h>

perfectly valid comments in Python?

Followups redirected.

--
Keith Thompson (The_Other_Keith) <kst-u@mib.org>
Nokia
"We must do something. This is something. Therefore, we must do this."
-- Antony Jay and Jonathan Lynn, "Yes Minister"

Robbie Hatley

4/3/2008 3:28:00 AM

0


"bc1891" wrote:

> #include <stdio.h>
> #include <stdlib.h>
>
> def RecursiveFact(n):
> if(n>1):
> return n*RecursiveFact(n-1)
> else:
> return 1
>
> fact = RecursiveFact(31)
> print fact
>
> fact = "End of program"
> print fact
>
> ......but yet it still gives the right answer. How is this possible?


No, no, no. Write that in Haskell instead, like this:


#Switch<C++RTTI>(ON)
#include <stdio.h> AND <stdlib.h>
#use FORTRAN_RUNTIME_MODULE but compile_as(Cobol)
#Incorporate{PascalInterpreter} but run_as(Haskell)
use strict;
use warnings;
sub RecursiveFact
{
my $n=shift;
if ($n > 1)
{
return $n * RecursiveFact($n-1);
}
else
{
return 1;
}
}
printf("%d\n",RecursiveFact($ARGV[0]));


Yep, that there Haskell program should solve these C++
problems you've been having with that Oberon program of yours,
by injecting a bit of Perlescence.


Or just write it in Fortran and be done with it:


/* This is a really lovely Fortran program. */
#include <stdio.h>
#include <stdlib.h>
int RecursiveFact (int n)
{
return n>1?n*RecursiveFact(n-1):1;
}
int main (int argc, char ** argv)
{
printf("%d", RecursiveFact(atoi(argv[1])));
return 0;
}


--
Cheers,
Robbie Hatley
lonewolf aatt well dott com
www dott well dott com slant user slant lonewolf slant