当前位置: 首页 > 编程笔记 >

如何在Python中编写递归函数?

田镜
2023-03-14
本文向大家介绍如何在Python中编写递归函数?,包括了如何在Python中编写递归函数?的使用技巧和注意事项,需要的朋友参考一下

一个递归 函数是它的执行过程中调用自身的函数。这使函数可以重复多次,输出结果和每次迭代的结束。递归与无限有关。 

下面是一个递归函数示例,用于查找整数的阶乘。

数字的阶乘 是从1到该数字的所有整数的乘积。 

例如,阶乘9(表示为9!)为1 * 2 * 3 * 4 * 5 * 6 * 7 * 8 * 9 = 362880。

例子1

def factorial(i):
   if i == 1:
      return 1
   else:
      return (i * factorial(i-1))
number = 9
print("The factorial of", number, "is", factorial(number))

输出结果

The factorial of 9 is 362880


在上面的程序factorial()中,它是一个称为递归的函数。每个函数调用将数字乘以1的阶乘,直到数字等于1。

例如,放置两个彼此面对的平行镜。它们之间的任何对象都将递归地反映出来。

例子2

def Function(x):
   if (x < 1):
      return
   else:
      print( x,end = " ")
      Function(x-1)
      print(x,end = " ")
      return
x = 5
Function(x)

输出结果

5 4 3 2 1 1 2 3 4 5
 类似资料:
  • 嗯,我已经试过多次了。不过,我一度认为最长的序列函数会有所帮助,因为它显示的是最长的冰雹序列。尽管如此,我似乎不知道如何查找或存储它用于查找的值。如果有人能解释一下,我将不胜感激。 我遇到的问题是我最长的启动顺序: 我不知道如何将其转换为递归,我注意到对于一些递归,我看到人们仍然在使用for循环,但我确信我们不应该使用循环。这可能是一个愚蠢的问题,但如果有人知道的话,有没有一个公式可以将循环转换为

  • 我知道如何通过将两个函数作为输入并输出其合成函数来合成两个函数,但如何返回合成函数f(f(…f(x))?谢谢

  • 问题内容: 我很难理解修饰的递归函数是如何工作的。对于以下代码段: 输出为: 第一个打印f(n),因此很自然,每次递归调用f(n)时,它都会打印“原始”。 第二个打印def_f(n),因此当n传递给包装器时,它将递归调用f(n)。但是包装器本身不是递归的,因此仅打印一个“装饰”。 第三个让我感到困惑,这与使用装饰器@dec相同。为什么修饰的f(n)也调用包装器五次?在我看来,def_f = dec

  • 考虑Python中的这个基本递归: 根据斐波那契数列的(n-1)(n-2)函数,这是有道理的。 Python如何执行包含另一个递归的递归,这个递归不在同一代码行内,而是在同一代码行内?“finobacci(number-1)”是否完成所有递归,直到它到达“1”,然后它对“fibonacci(number-2)”做同样的事情,并将它们相加? 作为比较,下面的递归函数将一个数“x”提升为“y”的幂,我

  • 问题内容: 我是python(programming)的新手,我发现下面的递归程序很难遵循。在调试程序时,我发现每次递归时都会经历递归并且递减值-1。在某一点是-1,编译器移至该部分并返回0。 最终该值变为1,这是怎么发生的? 并输出: 递归示例结果 1 3 6 10 15 21 问题答案: 尝试用铅笔和纸追踪该功能。在这种情况下,该函数的打印语句可能会引起误解。 考虑一下程序的这一部分, 从这里

  • 在编写合并排序的递推方程时,我对第二项[T(n)=2T(n/2)θ(n)]的推导位置感到困惑。 从Coursera类中可以看出,第二项是由于递归调用之外发生的事情引起的。所以我的猜测是因为这是由于2个For循环,每个循环将上升到n/2,所以总数将计数到n: 任何帮助都将不胜感激。谢谢