问题描述
编写一个带有两个输入参数的函数
lowest_integer()
:
- 代表递增函数}(representing)的函数
f
,- 数字
fmin
,并返回整数
nmin
,使得????> 0是最小的 满足?(????)>????的整数。要测试该功能,我们使用如下代码,在其中定义
f(n)
,然后print(lowest_integer(f,fmin))
并获得预期的输出:def f(n): return 2*n print(lowest_integer(f,10)) ## 6 def f(n): return n**2 + 6*n - 3 print(lowest_integer(f,500)) ## 20
我尝试输入代码:
def lowest_integer(f,fmin):
f = fmin
nmin = n + 1
return nmin
我在弄清楚如何在f(n)
函数中定义函数lowest_integer()
时遇到麻烦
解决方法
您可以遍历以1
开头的整数,直到找到满足条件的整数为止,在这种情况下,将其返回:
def lowest_integer(f,fmin):
nmin = 1
while True:
if f(nmin) > fmin:
return nmin
nmin += 1
def f(n):
return 2*n
print(lowest_integer(f,10))
def f(n):
return n**2 + 6*n - 3
print(lowest_integer(f,500))
输出:
6
20
这种方法当然是一种幼稚的方法,如果函数f
较慢且fmin
非常大,那么它将很慢,但总的来说还是不错的。
一种更快的方法是使用诸如sympy
之类的库,该库的功能使用适合此类问题的更复杂的方法和技术。
您可以这样做:
def lowest_integer(f,fmin):
nmin=1
while f(nmin)<=fmin :
nmin += 1
return nmin
您以nmin = 1
开头,并在nmin
时将1加到f(nmin)<=fmin
。为此,您可以使用while
循环。
通过执行f(nmin)
,您可以调用函数f
并为条目nmin
计算其值。
def f(n):
return 2*n
def lowest_integer(f,fmin):
for findmin in range(fmin):
if f(findmin) > fmin:
return findmin
return -1
print(lowest_integer(f,10))