每日简算---递归定义的函数(1)

在计算机科学中,算法的设计和实现是解决问题的关键。其中,递归算法是一种常见且强大的方法之一。它通过将问题分解为更小的子问题来解决复杂的计算任务。在本篇博客中,我们将探讨一个基于递归的算法题目,并详细介绍其解题思路和实现过程。

算法题目:

函数 输入一个整数,输出一个整数,计算方式为:

n ≤ 13时,f(n)可以直接计算:f(n) = - n + 62

n > 13时,f(n)被递归地计算:f(n) = f([n / 2]) + f([n / 5]) + 3

其中[n]表示向下取整

例如,计算f(51)的过程如下:

请你写一个程序,用来计算f(n)

提示:

1. 此题是一个非常简单的递归函数的题,你不需要像上面的图片那样劳心费神的把计算的过程手动模拟出来,你只需要利用函数可以调用自身的特点(即递归),直截了当的按照计算式把函数定义好即可。

2. Python中,a 和 b 的整数除法向下取整可直接使用表达式:a // b,如 15 // 4 得到的答案是 3

代码展示:

n = int(input())
sum = 0
list = []
list.append(n)
while len(list) > 0:
    for ll in list:
        if int(ll) > 13:
            sum += 3
            a = ll//2
            b = ll//5
            list.append(a)
            list.append(b)
            list.remove(ll)
        else:
            y = 62 - ll
            sum += y
            list.remove(ll)
print(sum)

解题思路:

  1. 输入:从用户输入中获取一个整数 n。

  2. 初始化:初始化 sum 为 0,用于记录总和。创建一个列表 list,将初始值 n 添加到列表中。

  3. 循环计算:使用 while 循环,当列表不为空时,执行以下操作:

    • 遍历列表:对列表中的每个元素 ll 进行遍历。

    • 判断大小:判断 ll 的大小:

      • 如果 ll 大于 13,则执行以下操作:

        • 计算 ll 除以 2 和 ll 除以 5 的商,分别赋值给 a 和 b。

        • 将 a 和 b 添加到列表中,并移除 ll。

        • 将 3 累加到 sum 中。

      • 如果 ll 不大于 13,则执行以下操作:

        • 计算 62 减去 ll 的差值 y,然后累加到 sum 中。

        • 移除 ll。

  4. 输出结果:输出最终的 sum,即为函数 f(n) 的计算结果。

  5. 解题思路大致是这样的,该算法通过逐步处理列表中的元素,根据不同的条件执行不同的操作,并累加操作的次数或差值,最终得到总和 sum。

  6. "以上代码和解题思路仅供参考,欢迎大家在评论区分享更好的代码,一起学习进步。如果以上代码有问题,请在评论区指出,我会及时回答。祝愿我们共同优化代码,不断提升编程技能!"

  • 6
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值