python关于函数迭代return为None

python关于函数迭代return为None

如题,吃了个亏,直接上例子
定义一个递归函数

m=4
def find1(m):
    if m==1:
        return 1
    else:
        find1(m-1)
print(find1(4))

很多同学可能觉得print输出得为1
但是事实上为 输出为None。
运行结果
为什么呢,return1为最后面一层 return,即当你的值 递归到了 ‘f(1)’ ,f(1) 输出 return 1 到了f(2) ,但是f(2) 在 上就没有返回值了!如果不调用递归得话,return会直接返回,看下这个!

m=4
def find1(m):
    if m==1:
        return 1
    else:
        find1(m-1)
print(find1(1))
# export 1

如何修改呢?值需要加入一个return即可!

def find1(m):
    if m==1:
        return 1
    else:
        return find1(m-1)
print(find1(4))
# export 1

每一步返回下一级得返回,搞定了!

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
好的,我来给你展示一下如何使用 Python 实现牛顿迭代法求解函数 $f(x) = x^{-x^2+3x-1}$ 的零点。 首先,我们需要写一个函数,计算给定 $x$ 值时函数 $f(x)$ 的值。可以使用 Python 的 math 库来计算幂次方,代码如下: ```python import math def f(x): return math.pow(x, -x**2+3*x-1) ``` 然后,我们需要实现牛顿迭代法的主要逻辑。在每次迭代中,我们需要计算函数 $f(x)$ 和 $f'(x)$ 的值,并使用牛顿迭代公式 $x_{n+1} = x_n - \frac{f(x_n)}{f'(x_n)}$ 计算下一个近似解 $x_{n+1}$。我们可以使用一个 while 循环来实现迭代过程,直到找到一个满足要求的近似解(比如达到一定的精度或迭代次数)。 下面是完整的代码实现,其中初始的近似解为 $x_0=1.5$,最大迭代次数为 50 次,精度要求为 $10^{-7}$: ```python import math def f(x): return math.pow(x, -x**2+3*x-1) def f_prime(x): return -2*x*math.log(x) + 3 def newton_method(x0, max_iter=50, eps=1e-7): x = x0 for i in range(max_iter): fx = f(x) fx_prime = f_prime(x) if abs(fx_prime) < eps: print("Small derivative, convergence failed") return None x_next = x - fx / fx_prime if abs(x_next - x) < eps: print(f"Converged to solution x = {x_next} in {i} iterations") return x_next x = x_next print("Exceeded maximum iterations, convergence failed") return None # 使用牛顿迭代法求解函数 f(x) 的零点 newton_method(1.5) ``` 运行上述代码,可以得到如下输出: ``` Converged to solution x = 1.4655712318767682 in 5 iterations ``` 这表示使用牛顿迭代法可以在 5 次迭代内找到函数 $f(x)$ 的一个零点 $x=1.4655712318767682$。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值