资讯专栏INFORMATION COLUMN

《算法图解》第四章第一节练习

niceforbear / 824人阅读

摘要:请编写前述函数的代码。编写一个递归函数来计算列表包含的元素数。找出列表中最大的数字还记得第章介绍的二分查找吗它也是一种分而治之算法。你能找出二分查找算法的基线条件和递归条件吗参考

4.1请编写前述sum函数的代码。
def diy_sum(arr):
if not arr:
    return 0
elif len(arr) == 1:
    return arr[0]
else:
    return arr.pop(0) + diy_sum(arr)


arr = [1, 2, 3]
print(diy_sum(arr))
4.2编写一个递归函数来计算列表包含的元素数。
def count_elements(list):
if not list:
    return None
elif len(list) == 1:
    return 1
else:
    return 1 + count_elements(list[1:])


list = [1, 2, 3]
print(count_elements(list))
4.3找出列表中最大的数字

def bigger(int1, int2):

if int1 >= int2:
    return int1
else:
    return int2

def find_biggest(list):

if not list:
    return None
elif len(list) == 1:
    return list[0]
elif len(list) == 2:
    return bigger(list[0], list[1])
else:
    return bigger(list[0], find_biggest(list[1:]))


list = [1, 5, 3, 2]
print(find_biggest(list))
4.4 还记得第1章介绍的二分查找吗?它也是一种分而治之算法。你能找出二分查找算法的基线条件和递归条件吗?
def binary_search_basic(list, target, low, high):
if low > high:
    return None
else:
    mid = int((low + high) / 2 + 0.5)
    guess = list[mid]
    if guess == target:
        return mid
    elif guess > target:
        high = mid - 1
        return binary_search_basic(list, target, low, high)
    else:
        low = mid + 1
        return binary_search_basic(list, target, low, high)


def binary_search_dc(list, target):
    return binary_search_basic(list, target, 0, len(list) - 1)

list = [1, 2, 3, 4, 5]
target = 3
print(binary_search_dc(list, target))

参考:
https://blog.csdn.net/XIAOZHI...

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/44021.html

相关文章

  • 可能是全网把 ZooKeeper 概念讲的最清楚的一篇文章

    摘要:的设计目标是将那些复杂且容易出错的分布式一致性服务封装起来,构成一个高效可靠的原语集,并以一系列简单易用的接口提供给用户使用。具有不可分割性即原语的执行必须是连续的,在执行过程中不允许被中断。 该文已加入开源文档:JavaGuide(一份涵盖大部分Java程序员所需要掌握的核心知识)。地址:https://github.com/Snailclimb... showImg(https:...

    DrizzleX 评论0 收藏0
  • 关于Python的三个谎言,别再盲目学Python了

    摘要:关于的三个谎言,你一定要清楚。这是的整个知识体系图谱,对于新手来说,没必要学那么多。第四自动化测试一切关于自动化的东西,似乎都可以满足,可以满足大多数自动化工作,提升工作效率。这都是正常的,千万别急着否定自己,怀疑自己。 ...

    TZLLOG 评论0 收藏0
  • iKcamp出品微信小程序教学共5章16小节汇总(含视频)

    摘要:微信小程序课程,面向所有具备前端基础知识的同学阅读要求读者需要具备但不限于以下技能更佳一共四部分十五小节,适合七天的训练营。 ?? 微信小程序课程,面向所有具备前端基础知识的同学 ?? 阅读要求 读者需要具备但不限于以下技能 HTML JavaScript es6更佳 CSS 一共四部分十五小节,适合七天的训练营。 从现在开始,我假装你已经掌握了 html、 css以及 ES6...

    elliott_hu 评论0 收藏0
  • iKcamp出品微信小程序教学共5章16小节汇总(含视频)

    摘要:微信小程序课程,面向所有具备前端基础知识的同学阅读要求读者需要具备但不限于以下技能更佳一共四部分十五小节,适合七天的训练营。 ?? 微信小程序课程,面向所有具备前端基础知识的同学 ?? 阅读要求 读者需要具备但不限于以下技能 HTML JavaScript es6更佳 CSS 一共四部分十五小节,适合七天的训练营。 从现在开始,我假装你已经掌握了 html、 css以及 ES6...

    paney129 评论0 收藏0

发表评论

0条评论

niceforbear

|高级讲师

TA的文章

阅读更多
最新活动
阅读需要支付1元查看
<