python 二分法求高次方程根的函数 python 二分法求平方根

您所在的位置:网站首页 二分法求平方根bPython python 二分法求高次方程根的函数 python 二分法求平方根

python 二分法求高次方程根的函数 python 二分法求平方根

#python 二分法求高次方程根的函数 python 二分法求平方根| 来源: 网络整理| 查看: 265

下面向大家介绍几个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) 9 or n2 >9 or n3 > 9 or n4 > 9: print("NO") num = [] # 24种操作数排列组合,用二维列表表示 for i in list(permutations([n1, n2, n3,n4], 4)): num.append(list(i)) opt = [] operators = ['+','-','*','/'] # 64种运算符排列组合生成,用二维列表表示 for i in range(0,4): for j in range(0,4): for k in range(0,4): opt.append([operators[i],operators[j],operators[k]]) str1 = "" # 下面是最终的运算判断以及排列组合 for n in num: for p in opt: # ((n1 运算符1 n2) 运算符2 n3) 运算符3 n4 result = run_operators(run_operators(run_operators(n[0],p[0],n[1]),p[1],n[2]),p[2],n[3]) if int(result) == 24: str1 = 'YES' print('YES') print("{0}{1}{2}{3}{4}{5}{6}{7}{8}{9}{10}{11}".format("(","((",n[0],p[0],n[1],")",p[1],n[2],")",p[2],n[3],")")) exit() # n4 运算符3 ((n1 运算符1 n2) 运算符2 n3) result = run_operators(n[3],p[2],run_operators(run_operators(n[0],p[0],n[1]),p[1],n[2])) if int(result) == 24: str1 = 'YES' print('YES') print("{0}{1}{2}{3}{4}{5}{6}{7}{8}{9}{10}{11}".format("(",n[3],p[2],"((",n[0],p[0],n[1],")",p[1],n[2],")",")")) exit() # (n3 运算符2 (n1 运算符1 n2)) 运算符3 n4 result = run_operators(run_operators(n[2],p[1],run_operators(n[0],p[0],n[1])),p[2],n[3]) if int(result) == 24: str1 = 'YES' print('YES') print("{0}{1}{2}{3}{4}{5}{6}{7}{8}{9}{10}{11}".format("(","(",n[2],p[1],"(",n[0],p[0],n[1],"))",p[2],n[3],")")) exit() # n4 运算符3 (n3 运算符2 (n1 运算符1 n2)) result = run_operators(n[3],p[2],run_operators(n[2],p[1],run_operators(n[0],p[0],n[1]))) if int(result) == 24: str1 = 'YES' print('YES') print("{0}{1}{2}{3}{4}{5}{6}{7}{8}{9}{10}{11}".format("(",n[3],p[2],"(",n[2],p[1],"(",n[0],p[0],n[1],"))",")")) exit() # (n1 运算符1 n2) 运算符3 (n3 运算符2 n4) # result = run_operators(run_operators(n[0],p[0],n[1]),p[2],run_operators(n[2],p[1],n[3])) # if int(result) == 24: # str1 = 'YES' # print('YES') # print("{0}{1}{2}{3}{4}{5}{6}{7}{8}{9}{10}{11}".format("(","(",n[0],p[0],n[1],")",p[2],"(",n[2],p[1],n[3],")",")",end="")) # break if str1 == '': print('NO') main()

结果如下:

python算法题

python几道简单的算法题   最近看了python的语法,但是总感觉不知道怎么使用它,还是先来敲敲一些简单的程序吧. 1.题目:有1.2.3.4个数字,能组成多少个互不相同且无重复数字的三位数?都 ...

Python算法题(三)——经典函数题

题目一(统计字符串中指定类型字符的个数): 假设所有字符分为三类:字母,数字及其他字符.‪‬‪‬‪‬‪‬‪‬‮‬‪‬‭‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‮‬‪‬‪‬‪‬‪‬ ...

Python算法题(二)——国际象棋棋盘(排列组合问题,最小的K个数)

题目一(输出国际象棋棋盘)  分析: 用i控制行,j来控制列,根据i+j的和的变化来控制输出黑方格,还是白方格.   主要代码: for i in range(8): for j in range(8 ...

Python算法题(一)——青蛙跳台阶

题目一(青蛙跳台阶): 一只青蛙一次可以跳上1级台阶,也可以跳上2级.求该青蛙跳上一个n级的台阶总共有多少种跳法. 分析: 假设只有一级台阶,则总共只有一种跳法: 假设有两级台阶,则总共有两种跳法: ...

Python算法题:金字塔

代码如下: #Python金字塔练习 """ 最大层数:max_level 当前层数:current_level 金字塔正序时: 每层的空格=最大层数-当前层数 每层的星 ...

Python算法题:有100只大、中、小骆驼,100框土豆,一只大骆驼可以背3框,中骆驼可以背俩框,小骆驼两只背一筐,问大中小各有多少只骆驼?

1 for x in range(0,100): 2 for y in range(0,100): 3 for z in range(0, 100): 4 if x*3+y*2+0.5*z == 10 ...

python+java蓝桥杯ACM日常算法题训练(一)10基础题

目录 1.简单的a+b 2.第一个HelloWorld程序! 3.三个数最大值 4.密码破译 5.母牛的故事 6.7.8.9.10 @(这里写自定义目录标题) 算法题训练网站:http://www.d ...

10道java经典算法题,每一题都能帮你提升java水平!

JAVA经典算法题 [程序1] 题目:古典问题:有一对兔子,从出生后第3个月起每个月都生一对兔子,小兔子长到第四个月后每个月又生一对兔子,假如兔子都不死,问每个月的兔子总数为多少? 1.程序分析:   ...

python每日经典算法题5(基础题)+1(中难题)

现在,越来越多的公司面试以及考验面试对算法要求都提高了一个层次,从现在,我讲每日抽出时间进行5+1算法题讲解,5是指基础题,1是指1道中等偏难.希望能够让大家熟练掌握python的语法结构已经一些高级 ...

随机推荐

Android 三大图片加载框架的对比——ImageLoader,Picasso,Glide

一.ImageLaoder介绍



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3