- android - 多次调用 OnPrimaryClipChangedListener
- android - 无法更新 RecyclerView 中的 TextView 字段
- android.database.CursorIndexOutOfBoundsException : Index 0 requested, 光标大小为 0
- android - 使用 AppCompat 时,我们是否需要明确指定其 UI 组件(Spinner、EditText)颜色
我是 Python 和 stackoverflow 的新手。我一直在尝试解决 Pyschools 的平方根近似的“while 循环”示例(主题 5:问题 9)。但是我无法获得所需的输出。我不确定这个问题是否与循环或公式有关。问题如下:
Create a function that takes in a positive number and return 2 integers such that the number is between the squares of the 2 integers. It returns the same integer twice if the number is a square of an integer.
示例:
sqApprox(2)
(1, 2)
sqApprox(4)
(2, 2)
sqApprox(5.1)
(2, 3)
这是我的代码:
<小时/>def sqApprox(num):
i = 0
minsq = 1 # set lower bound
maxsq = minsq # set upper bound
while i*i<=num: # set 'while' termination condition
if i*i<=num and i >=minsq: # complete inequality condition
minsq = i
if i*i<=num and i <=maxsq: # complete inequality condition
maxsq = i
i=i+1 # update i so that 'while' will terminate
return (minsq, maxsq)
<小时/>
如果我创建此函数 sqApprox(4)
并在 IDE 上调用它,我会得到输出 (2, 0)
。
有人可以让我知道我做错了什么吗?提前致谢。
最佳答案
这就是您的代码执行其操作的原因:
行后maxsq = minsq
执行后,这两个值都是 1。
当我们进入循环时
while i*i<=num: # set 'while' termination condition
if i*i<=num and i >=minsq: # complete inequality condition
minsq = i
if i*i<=num and i <=maxsq: # complete inequality condition
maxsq = i
i=i+1 # update i so that 'while' will terminate
首先注意循环内部 i*i<=num
,因此无需重新测试。因此它相当于:
while i*i<=num:
if i >=minsq:
minsq = i
if i <=maxsq:
maxsq = i
i=i+1
在第一次循环中i == 0
但是maxsq == 1
,使第二个条件成立,因此设置 maxsq
等于 i
的当前值,即 0。在随后的循环中,i <= maxsq
是 false (因为 maxsq == 0
但 i > 0
)因此 maxsq
永远不会超过 0。另一方面,while 循环中的第一个条件不断更新 minsq
正如预期的那样。
我建议忘记两者 minsq
和maxsq
完全地。让循环简单地是:
while i*i <= num:
i += 1 #shortcut for i = i + 1
循环执行完毕后,进行一个简单的测试,涉及 i-1
足以确定返回什么。
关于python - pyschools 平方根近似,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39995912/
出于某种原因,我的平方根程序得到的答案与大多数输入应得到的答案略有不同。我不确定这是为什么。只有某些输入是错误的。在给出答案后的最后我也遇到了段错误,我不确定为什么会这样。 #include #inc
我目前正在实现一个可以处理与物理单位相关的数字数据的类。 我想实现一种计算实例平方根的方法。假设您有一个具有属性值和名称的类的实例: from math import sqrt class Foo:
我正在使用 HTML + CSS + AngularJS 制作一个简单的计算器。一切正常,但我想添加一个 SquareRoot 函数。这是一些代码: function _solve(){ switc
问题是关于在通用数值接口(interface)中定义平方根算法的问题的策略方法。我知道存在解决不同条件下问题的算法。我对以下算法感兴趣: 仅使用选定的函数解决问题; 不关心操作的对象是整数、 floa
好吧,我已经研究了一段时间了,我知道我的逻辑是正确的,但是,我似乎无法生成正数的正确底平方根。 public int mySqrt(int x) { if(x 0) uppe
我找不到让这个函数 Math.sqrt(value) 工作的方法。 (╯°□°)╯︵┻━┻我不确定,但问题似乎出在运营商。我还尝试在 const calculation 中添加该函数,但它也不起作用。
我发现了这段获得平方根的代码,令我惊讶的是它的工作方式,使用 union 和位移这是代码: float sqrt3(const float x) { union { int i;
在 python 中使用 sqrt 函数时,我遇到了“distance ValueError: math domain error”问题。 这是我的代码: from math import sqrt
我一直在做一些研究,寻找一种对大整数进行运算的相对快速的平方根算法。我在这里找到了几个例程。第一个(下面)是用 C 语言编写的... int isqrt(int n) { int b = 0;
好吧,我想知道 math.h 平方根与其中包含神奇数字的那个(因 Quake 而出名,但由 SGI 制作)相比有多快。 但这对我来说是一个受伤的世界。 我首先在 Mac 上尝试了此操作,其中 math
有谁知道如何解决这个复发? 大定理在这里不起作用。 最佳答案 这在 O(1) 中似乎很明显,因为 T(n) = T(n - sqrt(n)) = T(m) with 0 < m < n 通过归纳,你得
我是一名优秀的程序员,十分优秀!