# Please debug this program

I had to make a program to estimate the value of pi using Ramanujan’s
method.

I have made the program but it is giving the following error

Question1.rb:8:in ‘factorial’:Interrupt

where ‘factorial’ is the name of the method and Question1.rb is the file
name.

Please reply.

On Sat, Jul 25, 2009 at 4:02 PM, Prateek A.[email protected]
wrote:

I had to make a program to estimate the value of pi using Ramanujan’s
method.

I have made the program but it is giving the following error

Question1.rb:8:in ‘factorial’:Interrupt

where ‘factorial’ is the name of the method and Question1.rb is the file
name.

Try this snippet, do you see the problem here?

def add(k)
i = 0
loop {
i += 1
if (i == k) then
return i
else
p i, k
end
sleep 1
}
end

k = gets
p add(k)

Prateek A. wrote:

I had to make a program to estimate the value of pi using Ramanujan’s
method.

I have made the program but it is giving the following error

Question1.rb:8:in ‘factorial’:Interrupt

You pressed ctrl-C?

I’m surprised it even ran at all:

def factorial(x)
if (x==0) then
return (1)
end
else
… something else

This doesn’t make sense syntactically - an ‘else’ without an ‘if’. You
need:

if x == 0
return 1
else
… something else
end

On Sat, Jul 25, 2009 at 7:24 PM, Brian C.[email protected]
wrote:

I’m surprised it even ran at all:

def factorial(x)
if (x==0) then
return (1)
end
else
… something else

This doesn’t make sense syntactically - an ‘else’ without an ‘if’.

An ‘else’ can live inside a method or a begin…end:

ruby y
y:6: warning: else without rescue is useless
FOO
ELSE
FOO
y:3:in `foo’: FOO (RuntimeError)
from y:9

cat y
def foo(n)
puts “FOO”
raise “FOO” if n
rescue
puts “RESCUE”
else
puts “ELSE”
end

foo(false)
foo(true)

ruby y
FOO
ELSE
FOO
RESCUE

http://rubycentral.com/pickaxe/tut_exceptions.html
“The else clause is a similar, although less useful, construct. If
present, it goes after the rescue clauses and before any ensure. The
body of an else clause is executed only if no exceptions are raised by
the main body of code.”

Ugh, thanks - I’d forgotten the use of ‘else’ as part of a rescue, and
the implicit begin/end around a method body.

ruby y
y:6: warning: else without rescue is useless

Matz send years ago that he regretted not making -w the default.