python一只青蛙一次可以_python算法题 python123网站单元四题目

下面向大家介绍几个python算法题。

一:二分法求平方根

1.题目要求为

2.输入输出格式为

3.博主解题的思路

这道题在c语言中是一道经典的题目,可以用循环,或者递归,在这里我们用python来写。无论是循环还是递归,都是下面的思路:

二分法就是从中间开始取,把我们每次的结果的变化值(这里是平方)和初始数值对比,然后分别从左右两边截取。

这里首先设定两个范围定界符low与high,而且有可能我们输入法的小于1,就需要语法max(n,1.0),然后得到每次的中间值mid,然后进行循环或者递归,条件是,我们最终的得到的平方根mid的平方和我们最初的数值n的相差范围在1e-6。

然后根据mid的平方和n对比,如果mid的平方小于n的话,说明n的平方根在原来中间值的右边,此时就要在中间值以及最大值的那个范围寻找,把下一次的初始值设为前一次的中间值,然后前一次的中间值取下一次的中间值;如果如果mid的平方大于n的话,刚好反过来,这样等到循环到mid的平方和我们最初的数值n的相差范围在1e-6时,就可以认为结果在合理范围内。

4.代码如下

(1)循环解题代码

from math import sqrt

def sqrt_binary(n):

low = 0

high = max(n,1.0)

mid = (high + low) / 2.0

while abs(mid ** 2 - n) > 1e-6:

if mid ** 2 < n:

low = mid

else:

high = mid

mid = (high + low) / 2.0

print(mid)

print(sqrt(n))

n = eval(input(""))

sqrt_binary(n)

(2)递归解题代码

from math import sqrt

def sqrt_binary(n,low,high,mid):

if abs(mid ** 2 - n) <= 1e-6:

print(mid)

print(sqrt(n))

else:

if mid ** 2 < n:

low = mid

mid = (high + low) / 2.0

sqrt_binary(n,low,high,mid)

else:

high = mid

mid = (high + low) / 2.0

sqrt_binary(n,low,high,mid)

n = eval(input(""))

low = 0

high = max(n,1.0)

mid = (high + low) / 2.0

sqrt_binary(n,low,high,mid)

二:Collatz猜想

1.题目要求为

2.输入输出格式为

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值