方法递归就是一个 方法 在方法体内又调用了自身,我们称为方法的递归调用。
Ruby 方法递归,实现求阶乘
#!/usr/bin/ruby -w
# -*- coding : utf-8 -*-
puts "HaiCoder(www.haicoder.net)"
def factorial(num)
result = 0
if num > 0
result = num * factorial(num-1)
return result
end
return 1
end
factorialResult = factorial(5)
printf("factorialResult = %d\n", factorialResult)
程序运行后,控制台输出如下:
我们定义了一个 factorial 方法,该方法的参数是一个数字,在方法体里面我们使用 if 判断,如果当前参数的值大于 0 的话,我们就再次调用自己,并且参数的值是当前值减一,最后返回计算的结果。
如果当前参数的值不大于 0 的话,那么就直接返回 1。这里的 if 条件里面的逻辑就是方法 factorial 自己调用自己,这就构成了递归调用。同时不满足 if 条件的情况,就是递归调用的出口。
Ruby方法递归,实现斐波那契数列
#!/usr/bin/ruby -w
# -*- coding : utf-8 -*-
puts "HaiCoder(www.haicoder.net)"
def fibonacci(num)
if num <= 1
return 1
else
return fibonacci(num-1) + fibonacci(num-2)
end
end
fibonacci5 = fibonacci(5)
printf("fibonacci5 = %d\n", fibonacci5)
程序运行后,控制台输出如下:
我们定义了一个 fibonacci 方法,该方法的参数是 int,返回值也是 int,在方法体里面我们使用 if 判断,如果当前参数的值小于等于 1 的话,那么我们就将结果赋值为 1,否则我们就再次调用自己。
方法递归就是一个方法在方法体内又调用了自身,我们称为方法的递归调用。方法递归最重要的就是一定要找到递归调用的出口。