数据结构与算法一

循环与递归

递归:无限调用自身这个函数,每次调用总会改动一个关键变量,直到这个关键变量达到边界的时候,不再调用。
递归与循环的区别?
相同点:
(1)都是通过控制一个变量的边界(或者多个),来改变多个变量为了得到所需要的值,而反复而执行的;
(2)都是按照预先设计好的推断实现某一个值求取;(请注意,在这里循环要更注重过程,而递归偏结果一点)

不同点:
(1)递归通常是逆向思维居多,“递”和“归”不一定容易发现(比较难以理解);而循环从开始条件到结束条件,包括中间循环变量,都需要表达出来(比较简洁明了)。

简单的来说就是:用循环能实现的,递归一般可以实现,但是能用递归实现的,循环不一定能。
因为有些题目①只注重循环的结束条件和循环过程,而往往这个结束条件不易表达(也就是说用循环并不好写);
②只注重循环的次数而不注重循环的开始条件和结束条件(这个循环更加无从下手了)。

eg:用循环的方法计算1-5的和?

def get_sum(n):
    num=0
    for i in range(n+1):
        num+=i
    return num
print(get_sum(5))
	输出结果:15

eg:用循环的方法计算1-5的乘积?

def get_sum(n):
    num=1
    for i in range(1,n+1):
        num*=i
    return num
print(get_sum(5))
	输出结果:120

递归:
eg:用递归的方法计算某一个数以内的偶数和?

def mul(n):
   if n>1 and n%2==0:
      return mul(n-2)+n
   elif n>1 and n%2==1:
      return mul(n-3)+n-1
   elif n==0:
      return 0
print(int(mul(7)))
	输出结果:12

斐波那契数列算法
eg:确定某一位的斐波那契数?

def dif(n):
   return dif(n-1)+dif(n-2) if n>2 else 1
print(int(dif(5)))
	输出结果:5
def dif1(n):
   a = 0
   b = 1
   for i in range(n):
      b = a + b
      a = b - a
   return a
print(dif1(5))
	输出结果:5
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
软件综合实习指导书 一 概述 软件综合主要内容为数据结构相关算法的编程实现。数据结构稍微复杂一些的算法设计可能同时要用到多种技术和方法,如算法设计的构思方法,动态变量及链表,算法的编码,递归技术,与特定问题相关的技术等。侧重于与线性链表、二叉树和树、图结构、数组结构相关的算法的设计。其侧重于(或若干种)基本算法或解题方法,并以此为基础进行推广提高的基础。通过实验内容的训练,突出构造性思维训练的特征,提高学生组织数据与进行编写大型程序能力。上机实习是对学生的一种全面综合训练,是与课堂听讲、自学和练习相辅相成的必不可少的一个教学环节。通常,实习题的问题比平时的习题复杂得多,也更接近实际。实习着 眼于原理与应用的结合点,使读者学会如何把书上学到的知识用于解决实际问题,培养软件工作所需要的动手能力;另一方面,能使书上的知识变“活”,起到深化理解和灵活掌握教学 内容的目的。平时的练习较偏重于如何编写功能单一的“小”算法,而实习题是软件设计的综合训练,包括问题分析,总体结构设计,用户界面设计,程序设计基本技能和技巧,以至一整套软件工作规范的训练和科学作风的培养。  每个实习题采取了统一的格式,由问题描述、基本要求、测试数据、实现提示和选做内容等5个部分组成。    问题描述旨在为读者建立问题提出的背景环境,指明问题“是什么”;  基本要求则对问题进一步求精,划出问题的边界,指出具体的参量或前提条件,并规定该题的最低限度要求;  测试数据部分旨在为检查学生上机作业提供方便,在完成实习题时应自己设计完整和严格的测试方案,当数据输入量较大时,提倡以文件形式向程序提供输入数据;  实现提示对实现的难点及其解法思路等问题作了简要提示;  选做内容向那些尚有余力的读者提出了更严峻的挑战,同时也能开拓其他读者的思路,在完成基本要求时就力求避免就事论事的不良思想方法,尽可能寻求具有普遍意义的解法,使得程序结构合理,容易修改扩充。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值