返回递增函数的最小整数

问题描述

编写一个带有两个输入参数的函数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))

相关问答

错误1:Request method ‘DELETE‘ not supported 错误还原:...
错误1:启动docker镜像时报错:Error response from daemon:...
错误1:private field ‘xxx‘ is never assigned 按Alt...
报错如下,通过源不能下载,最后警告pip需升级版本 Requirem...