Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/mercurial/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
解释Ruby阶乘函数?_Ruby_Factorial - Fatal编程技术网

解释Ruby阶乘函数?

解释Ruby阶乘函数?,ruby,factorial,Ruby,Factorial,我理解if/else语句的简写。我不明白的是在函数本身中使用n*factorial(n-1) 看起来阶乘函数是在阶乘函数内部调用的,但这不可能是正确的吗?阶乘(5)的计算结果是 def factorial(n) result = 1 if n == 0 return 1 end while n > 0 result *= n n -= 1 end return result end 5 * factorial(4) 4 * fact

我理解if/else语句的简写。我不明白的是在函数本身中使用n*factorial(n-1)

看起来阶乘函数是在阶乘函数内部调用的,但这不可能是正确的吗?

阶乘(5)的计算结果是

def factorial(n)
  result = 1

  if n == 0 
    return 1
  end

  while n > 0
    result *= n
    n -= 1
  end
  return result
end
5 * factorial(4)
4 * factorial(3)
3 * factorial(2)
阶乘(4)的计算结果为

def factorial(n)
  result = 1

  if n == 0 
    return 1
  end

  while n > 0
    result *= n
    n -= 1
  end
  return result
end
5 * factorial(4)
4 * factorial(3)
3 * factorial(2)
阶乘(3)的计算结果为

def factorial(n)
  result = 1

  if n == 0 
    return 1
  end

  while n > 0
    result *= n
    n -= 1
  end
  return result
end
5 * factorial(4)
4 * factorial(3)
3 * factorial(2)
阶乘(2)的计算结果为

def factorial(n)
  result = 1

  if n == 0 
    return 1
  end

  while n > 0
    result *= n
    n -= 1
  end
  return result
end
5 * factorial(4)
4 * factorial(3)
3 * factorial(2)

阶乘(1)的计算结果为1,因为1实际上就是这里发生的事情。这是一种计算阶乘的递归方法。这正是正在发生的事情。
factorial
函数在其内部被调用。“要理解递归,首先必须理解递归。”感谢各位,这正是我想要的答案。现在我知道它叫什么了,我一定会进一步研究递归。清楚明了,切中要害,谢谢@Rasedge-如果您有时间,请将其标记为答案,我将不胜感激。