前言

本篇继续收集一些常见的python笔试题,以基础知识为主,递归是面试最喜欢考的一个问题,不管是做开发还是测试,都无法避免考递归。本篇结合实际案例,讲下几种关于递归的场景。

计算n的阶乘

计算n!,例如n=3(计算321=6), 求10!

方法1:可以用python里面的reduce函数,reduce() 函数会对参数序列中元素进行累积。

函数将一个数据集合(链表,元组等)中的所有数据进行下列操作:用传给 reduce 中的函数 function(有两个参数)先对集合中的第 1、2 个元素进行操作,得到的结果再与第三个数据用 function 函数运算,最后得到一个结果。

from functools import reduce

# 方法1:推荐!

a = 10
b = reduce(lambda x, y: x*y, range(1, a+1))
print(b)

如果不想用lamdba函数,可以定义一个函数

from functools import reduce

def chengfa(x, y):
    return x*y
a = 10
b = reduce(chengfa, range(1, a+1))
print(b)

方法2:自己写个递归函数

def digui(n):
    if n == 1:
        return 1
    else:
        return n*digui(n-1)

a = 10
print(digui(a))

方法3:用for循环(不推荐!)

a = 10
s = 1
for i in range(1, a+1):
    s = s*i
print(s)

斐波那契数列

已知一个数列:1、1、2、3、5、8、13、。。。。的规律为从3开始的每一项都等于其前两项的和,这是斐波那契数列。求满足规律的100以内的所以数据

a = 0
b = 1
while b < 100:
    print(b,",")
    a, b = b, a+b

def factorial(n):
    if n<1:
        return -1
    if n==1 or n==2:
        return 1
    else:
        return factorial(n-1)+factorial(n-2)
 

幂的递归

计算x的n次方,如:3的4次方 为3*3*3*3=81 ,可直接使用内置函数pow(3,4)

def f(x,n):
  A=isinstance(x,(int,float))  #这是考虑x和n的类型,需要满足条件才可以往下执行
  if A!=True:
    return None
  B=isinstance(n,(int,float))
  if B!=True:
    return None
  if x==0:
    return None

  s=1    #设置s的初始值
  while n>0:#下面讨论的是n的三种情况
    n=n-1
    s=s*x
    #因为初始值s就等于1,所以可以这样写
  if n==0:
    return s
  else:
    L=abs(n)
    while L>0:
      L=L-1
      s=s*x
  return 1/s  #因为当n为负数的时候,需要先求平方,然后再用1来除以这个数
print(f('J',3))

关于面试总结-python笔试题(递归)的更多相关文章

  1. 关于面试总结5-python笔试题(递归)

    前言 本篇继续收集一些常见的python笔试题,以基础知识为主,递归是面试最喜欢考的一个问题,不管是做开发还是测试,都无法避免考递归.本篇结合实际案例,讲下几种关于递归的场景. 计算n的阶乘 计算n! ...

  2. 关于面试总结-python笔试题

    关于面试总结4-python笔试题 前言 现在面试测试岗位,一般会要求熟悉一门语言(python/java),为了考验求职者的基本功,一般会出2个笔试题,这些题目一般不难,主要考察基本功. 要是给你一 ...

  3. 【Python】【面试必看】Python笔试题

    前言 现在面试测试岗位,一般会要求熟悉一门语言(python/java),为了考验求职者的基本功,一般会出 2 个笔试题,这些题目一般不难,主要考察基本功.要是给你一台电脑,在编辑器里面边写边调试,没 ...

  4. python笔试题(1)

            为了充实自己,小编决定上传自己见到的笔试题和面试题.可能要写好长时间,一时半会写不了多少,只能说遇到多少写多少吧,但是只要小编有时间,会持续上传(但是答案却不能保证,所以有看到错误的及 ...

  5. 关于面试总结4-python笔试题

    前言 现在面试测试岗位,一般会要求熟悉一门语言(python/java),为了考验求职者的基本功,一般会出2个笔试题,这些题目一般不难,主要考察基本功. 要是给你一台电脑,在编辑器里面边写边调试,没多 ...

  6. 去蓝港在线面试Unity3D的笔试题。难吗?知道答案的在评论里写出来分享

    前一阵子去蓝港面试unity3d程序,在前台登记以后被领到一个吧台前面填2张个人信息表,之后有人送来笔试题,做了1个小时,感觉挺难的.之后被带到下面面试,面试的是一个年龄稍大的(可能是项目经理或者技术 ...

  7. Python笔试题&面试题总结

    黑色加粗的是笔试题,蓝色是面试题 1.什么是GIL 2.Python中的@staticmethod和@classmethod的区别 (**) 3.Python里面如何拷贝一个对象,并解析深浅拷贝 4. ...

  8. 最新Python笔试题2017 涵盖知识面广泛

    引言 想找一份Python开发工作吗?那你很可能得证明自己知道如何使用Python.下面这些问题涉及了与Python相关的许多技能,问题的关注点主要是语言本身,不是某个特定的包或模块.每一个问题都可以 ...

  9. 传说中的华为Python笔试题——两等长整数序列互换元素,序列和的差值最小(修正)

    有两个序列a,b,大小都为n,序列元素的值任意整形数,无序:要求:通过交换a,b中的元素,使[序列a元素的和]与[序列b元素的和]之间的差最小. 1. 将两序列合并为一个序列,并排序,得到source ...

随机推荐

  1. Python实现决策树C4.5算法

    为什么要改进成C4.5算法 原理 C4.5算法是在ID3算法上的一种改进,它与ID3算法最大的区别就是特征选择上有所不同,一个是基于信息增益比,一个是基于信息增益. 之所以这样做是因为信息增益倾向于选 ...

  2. LINUX 文件夹打包

    tar -zcvf /data/www.tar.gz data/www tar -zcvf 打包后生成的文件名全路径 要打包的目录 压缩: 压缩当前的文件夹 zip -r ./xahot.zip ./ ...

  3. PHP设计模式 原型模式(Prototype)

    定义 和工厂模式类似,用来创建对象.但实现机制不同,原型模式是先创建一个对象,采用clone的方式进行新对象的创建. 场景 大对象的创建. 优点 1.可以在运行时刻增加和删除产品 2.可以改变值或结构 ...

  4. 浅析Statement和PreparedStatement的区别

    当我们使用java程序来操作sql server时会使用到Statement和PreparedStatement,俩者都可以用于把sql语句从java程序中发送到指定数据库,并执行sql语句.那么如何 ...

  5. iOS9 开发新特性 Spotlight使用

    1.Spotloight是什么? Spotlight在iOS9上做了一些新的改进, 也就是开放了一些新的API, 通过Core Spotlight Framework你可以在你的app中集成Spotl ...

  6. python笔记_magic变量和函数

    前言 先扯一点背景知识 PEP8(Python Enhancement Proposal)是一份python的编码规范,链接:http://www.python.org/dev/peps/pep-00 ...

  7. leetcode_41. First Missing Positive_cyclic swapping

    https://leetcode.com/problems/first-missing-positive/ 给定一个长度为len的无序数组nums,找到其第一个丢失的正整数. 解法: 使用cyclic ...

  8. mybatis中存储过程的调用

    dao层 // 调用存储过程 void callProcedureGrantEarnings(@Param("params") Map<String,Object> p ...

  9. hql语法001

    1. import java.util.List; import org.hibernate.*; import org.junit.Test; import cn.jbit.hibernatedem ...

  10. 用Vue的方式实现复选框

    var borrVm = new Vue({ el: "#WingApp", data: { returnBookList:[], checked:"", ch ...