论函数递归思想在编程语言中的运用

一、前言概述

上一讲我们浅析了函数递归思想在解决动态规划中的重要作用,而函数递归本质上就是数列函数的数学思维,本篇将通过以下两个小案例带大家了解什么是数列函数以及它的一些运用编程题!

二、浅析递归运用

下题目出自HJ100 等差数列_牛客题霸_牛客网 (nowcoder.com)

分析:简单的一项等差数列求和题目,高中基础知识,学过数列,懂一点编程基础就可解答,但假如说未学过等差数列(概率比较小),那咱们像高斯一样,递归推一遍即可,由于这是通识问题,这里不再开赘述。通项An = a1 + (n-1) *d ,Sn = n*a1 + n*(n-1)*d/2,以下是py代码。

while 1:
    try:
        n = int(input())
        print(int(n*2 + n*(n-1)*3/2)) #等差数列求和公式,s = n*a1 + n*(n-1)*d/2
    except:
        break

如果你还记得等差数列相关知识,那么请继续看下一题,也是数列求和问题,加深一下自己数列推理思维。此题出自 统计每个月兔子的总数_牛客题霸_牛客网 (nowcoder.com)

分析:不妨设……,别急,先简单分析下数字规律,通过表1我们会发现原来(从第三项起)第三项 = 前两项之和。宾狗,没错此时用数列可以表示An = An + An-1,其中a1,a2 =1,1。那么如果能够表达处an的通项公式,此题是不是就解答出来了,没错是的,不过我们不是在单纯做数学题,而是解答编程题,两者本质区别是,计算机迭代计算速度超过你的想象,我们只需给出它的递归函数即可(或者说让计算机又能够有迭代的路径-数列函数表达式),它直接可依据输入给出输出!

因此,不妨设f(n)为第n月兔子的数量,详情请看一下py代码。

表1 寻找兔子规律
n11234567……
An1123581321……
while True:
    try:
        n = int(input())
        def f(n):
            if n<=2: #给出f(1)=f(2)=1
                return 1
            else:
                return (f(n-1)+f(n-2)) #通项表达式
        print(f(n)) #执行
    except:
        break

如果说你已作对此题,恭喜你对数列递归有了初步掌握,可以善加利用计算机解决一些有趣的数学题,如果没做对,没关系,请一起努力吧。

三、致谢总结

感谢各位铁子、网友们支持,如果觉得小弟这篇blog对你有帮助的话,请点赞支持一下小弟吧,你的支持和鼓励是我创造的巨大动力,最好再次感谢铁子们!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值