编程交流第五期

本文介绍了如何使用Python编程语言实现斐波那契数列的递归求解方法以及二分查找算法。对于斐波那契数列,通过递归函数计算给定整数n的对应数;而对于二分查找,展示了如何在已排序列表中寻找目标整数并返回其索引或-1表示未找到。
部署运行你感兴趣的模型镜像

文本处理和动态规划

任务一、递归求解斐波那契数列

要求:

编写一个递归函数fibonacci,接受一个整数参数n,并返回第n个斐波那契数。

斐波那契数列的定义如下:

第1个数为0

第2个数为1

从第3个数开始,每个数都是前两个数的和

步骤:

  • 定义一个递归函数fibonacci,它接受一个整数参数n。
  • 如果n等于1,则返回0。
  • 如果n等于2,则返回1。
  • 如果n大于2,则返回调用fibonacci函数分别计算第n-1和第n-2个斐波那契数的和。

假设n = 10,求第十个斐波那契数

任务二、二分查找

要求:

编写一个函数binary_search,接受一个已排序整数列表[1, 3, 5, 7, 9, 11, 13, 15, 17, 19]和一个目标整数11作为参数,并返回输出目标整数在列表中的索引。如果目标整数不在列表中,返回-1。

步骤:

  • 定义一个函数binary_search,它接受一个已排序整数列表nums和一个目标整数target。
  • 初始化变量left为0,变量right为列表长度减1。
  • 使用一个循环,条件是left小于等于right。
  • 在循环内部,计算中间元素的索引,即(left + right) // 2。
  • 如果中间元素等于目标整数,返回中间索引。
  • 如果中间元素大于目标整数,更新right为中间索引减1。
  • 如果中间元素小于目标整数,更新left为中间索引加1。
  • 循环结束后,如果没有找到目标整数,返回-1。

推荐代码格式(Python 版本)

import XXX

# 任务一

class Solution(object):

    def isScramble(self, s1, s2):

        """

        :type s1: str

        :type s2: str

        :rtype: bool

        """

class Solution(object):

    def numSquares(self, n):

        """

        :type n: int

        :rtype: int

        """

# 任务二

class Solution(object):

    def trap(self, height):

        """

        :type height: List[int]

        :rtype: int

        """

开发情况任务一:

# Task 1
def fib(n):
    if n <= 2:
        print('n为{}时,第{}个斐波那契数为{}'.format(n, n, n))
        return n
    else:
        fib_list = [1,2]
        for i in range(n-2):
            fib_list.append(fib_list[-2]+fib_list[-1])
        print('n为{}时,斐波那契数列为:'.format(n),fib_list,'第{}个斐波那契数为{}'.format(n, fib_list[-1]))
        return fib_list[-1]
def fibonacci(a):
    if a < 0:
        print("请检查条件重新输入")
    elif a <= 1:
        return a
    else:
        return fibonacci(a-1)+fibonacci(a-2)

n = int(input("请输入整数n:"))
print(fibonacci(n))
#任务一
def fibonacci(n):
    if n == 1:
        return 0
    elif n == 2:
        return 1
    else:
        return fibonacci(n-1) + fibonacci(n-2)
n = 10
print(fibonacci(n))
#任务一
def fibonacci(n):
    if n == 1:
        return 0
    elif n == 2:
        return 1
    else:
        return fibonacci(n-1) + fibonacci(n-2)

n = 10
result = fibonacci(n)
print(f"The {n}th Fibonacci number is: {result}")
# 任务一:递归求解斐波那契数列
def fibonacci(n):
    if n == 1:
        return 0
    elif n == 2:
        return 1
    else:
        return fibonacci(n-1) + fibonacci(n-2)

# 测试代码
n = 10
fib_num = fibonacci(n)
print(f"第{n}个斐波那契数:", fib_num)

开发情况任务二:

# Task 2
def binary_search(sort_list, par):
    return sort_list.index(par) if par in sort_list else -1


if __name__ == '__main__':
    # Task 1
    fib(10)

    # Task 2
    print(binary_search([1, 3, 5, 7, 9, 11, 13, 15, 17, 19], 11))
#任务二
def binary_search(nums, target):
    left, right = 0, len(nums) - 1

    while left <= right:
        middle = (left + right) // 2
        if nums[middle] == target:
            return middle
        elif nums[middle] > target:
            right = middle - 1
        else:
            left = middle + 1

    return -1


nums = [1, 3, 5, 7, 9, 11, 13, 15, 17, 19]
target = 11
print(binary_search(nums, target))  # 输出 5
#任务二

def binary_search(nums, target):
    left = 0
    right = len(nums) - 1

    while left <= right:
        mid = (left + right) // 2
        if nums[mid] == target:
            return mid
        elif nums[mid] > target:
            right = mid - 1
        else:
            left = mid + 1

    return -1

#你可以调用这个函数来查找目标整数在已排序整数列表中的索引。例如:


nums = [1, 3, 5, 7, 9, 11, 13, 15, 17, 19]
target = 11
result = binary_search(nums, target)
print(result)  # 输出: 5

#如果目标整数不在列表中,将返回-1。
# 任务二:二分查找
def binary_search(nums, target):
    left = 0
    right = len(nums) - 1
    while left <= right:
        mid = (left + right) // 2
        if nums[mid] == target:
            return mid
        elif nums[mid] > target:
            right = mid - 1
        else:
            left = mid + 1
    return -1

# 测试代码
sorted_nums = [1, 3, 5, 7, 9, 11, 13, 15, 17, 19]
target_num = 11

target_index = binary_search(sorted_nums, target_num)
print(f"目标整数{target_num}在列表中的索引:", target_index)

您可能感兴趣的与本文相关的镜像

Python3.10

Python3.10

Conda
Python

Python 是一种高级、解释型、通用的编程语言,以其简洁易读的语法而闻名,适用于广泛的应用,包括Web开发、数据分析、人工智能和自动化脚本

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值