前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Python函数递归

Python函数递归

原创
作者头像
织幻妖
修改2021-07-05 10:03:08
8950
修改2021-07-05 10:03:08
举报

1.己知有一个数列:f(0) = 1,f(1) = 4,f(n + 2) = 2*f(n+ 1) +f(n),其中 n 是大于 0 的整数,求 f(10) 的值。

找出f(n):

代码语言:javascript
复制
f(0) = 1,f(1) = 4,
f(n + 2) = 2*f(n + 1) +f(n)
当n=1时:
f(3)=2*f(2)+f(1)
当n=2时:
n=2
f(4)=2*f(3)+f(2)
当n=3时:
n=3
f(5)=2*f(4)+f(3)
当n=4时:
n=4
f(6)=2*f(5)+f(4)
......
f(n)=2*f(n-1)+f(n-2)

这道题可以使用递归来求得。

定义一个fn()函数

代码语言:javascript
复制
def fn(n) :
    if n == 0 :
        return 1
    elif n == 1 :
        return 4
    else :
        # 函数中调用它自身,就是函数递归
        return 2 * fn(n - 1) + fn(n - 2)

列出fn(0)-fn(10)

代码语言:javascript
复制
print("fn(0)的结果是:", fn(0))
print("fn(1)的结果是:", fn(1))
print("fn(2)的结果是:", fn(2))
print("fn(3)的结果是:", fn(3))
print("fn(4)的结果是:", fn(4))
print("fn(5)的结果是:", fn(5))
print("fn(6)的结果是:", fn(6))
print("fn(7)的结果是:", fn(7))
print("fn(8)的结果是:", fn(8))
print("fn(9)的结果是:", fn(9))
print("fn(10)的结果是:", fn(10))

结果展示:

2,己知有一个数列:f(20)=1,f(21)=4,f(n + 2)=2*f(n+1)+f(n),其中 n 是大于 0 的整数,求 f(10) 的值。

找出f(n):

代码语言:javascript
复制
f(20)=1,f(21)=4,
f(n + 2)=2*f(n+1)+f(n)
当n=20
f(22)=2*f(21)+f(20)
f(20)=f(22)-2*f(21)
当n=21
f(23)=2*f(22)+f(21)
f(21)=f(23)-2*f(22)
......
f(n)=f(n+2)-2*f(n+1)

定义fn()函数

代码语言:javascript
复制
def fn(n) :
    if n == 20 :
        return 1
    elif n == 21 :
        return 4
    else :
        # 函数中调用它自身,就是函数递归
        return fn(n + 2) - 2*fn(n + 1)

列出fn(0)-fn(10)

代码语言:javascript
复制
print("fn(0)的结果是:", fn(0))
print("fn(1)的结果是:", fn(1))
print("fn(2)的结果是:", fn(2))
print("fn(3)的结果是:", fn(3))
print("fn(4)的结果是:", fn(4))
print("fn(5)的结果是:", fn(5))
print("fn(6)的结果是:", fn(6))
print("fn(7)的结果是:", fn(7))
print("fn(8)的结果是:", fn(8))
print("fn(9)的结果是:", fn(9))
print("fn(10)的结果是:", fn(10))

结果展示:

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 1.己知有一个数列:f(0) = 1,f(1) = 4,f(n + 2) = 2*f(n+ 1) +f(n),其中 n 是大于 0 的整数,求 f(10) 的值。
    • 找出f(n):
      • 定义一个fn()函数
        • 列出fn(0)-fn(10)
          • 结果展示:
          • 2,己知有一个数列:f(20)=1,f(21)=4,f(n + 2)=2*f(n+1)+f(n),其中 n 是大于 0 的整数,求 f(10) 的值。
            • 找出f(n):
              • 定义fn()函数
                • 列出fn(0)-fn(10)
                  • 结果展示:
                  领券
                  问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档