递归(高斯计数 汉诺塔)

本文介绍了在毕设中作者补习递归知识的过程,通过实例解析了高斯计数问题和汉诺塔问题的递归解法,并推荐了一款好用的手写软件Xournal++用于辅助递归练习。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

最近要做毕设 递归生成谢尔宾斯基分形 

发现自己基础还是很薄弱的,去补了递归知识

#高斯计数问题

从1计算到100 问题

import math

#高斯小朋友计算 1到100

def myfun(i):
    if i >0:
        return i+myfun(i-1)
    else:
        return 0

print(myfun(100))

以上问题是由一个函数myfun

如果i大于0的情况 则返回i这个数 加上 执行i-1

直到i等于0或者小于0

我们先执行一遍

函数myfun(100)

得到 100+myfun(99)

递归调用myfun(99),此时i变为了99 得到99+myfun(98)

于是 直到i等于0

可得100+99+98+.....+1 = 5050

汉诺塔问题

假设有这样一个图

A B C为三个区域

A上放着一个大的矩形 一个小的矩形

我们需要把A上的方块移动到C

规则如下:

小的不能放在大的下面

每次只能移动一个

于是 我们可以实现的步骤为

先把小的从A移到B 再把大的从A移到C

最后把小的从B移到C

代码实现为

#汉诺塔问题

def hanoi(n,A,B,C):
    if(n == 1):
        print('移动 从 %c 到%c'%(A,C))
    else:
        hanoi(n-1,A,C,B)
        print('移动 从 %c 到%c'%(A,C))
        hanoi(n-1,B,A,C)

hanoi(3,'A','B','C')

由大佬的视频里找到了好用的手写软件

「递归练习」汉诺塔_哔哩哔哩_bilibili

Xournal++-1.2.3-portable.7z - 蓝奏云 (lanzouj.com)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值