算法面试其他篇
目录:
1.1 简单数学题
1、有1、2、3、4个数字,能组成多少个互不相同且无重复数字的三位数?都是多少?
![](https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif)
#! /usr/bin/env python # -*- coding: utf-8 -*- #题目:有1、2、3、4个数字,能组成多少个互不相同且无重复数字的三位数?都是多少? sum=0 for i in range(1,5,1): for j in range(1,5,1): for k in range(1,5,1): if i!=j and i!=k and k!=j : sum=sum+1 print i,j,k # 这里去重 print sum
2、求n的阶乘
![](https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif)
#! /usr/bin/env python # -*- coding: utf-8 -*- def f(n): if n == 1: return 1 else: return n * f(n-1) print f(3) # 6 ''' 推演: 3 # 递归第一层 n=3:f(3) 入栈:【f(3),】 2 # 递归第二层 n=2:f(2) 入栈:【f(3), f(2)】 1 # 递归第三层 n=1 ######## 递归到此时 n=1 不满足递归条件开始出栈 ########## 【n:2】【ret:2】 f(2) = 2 * f(1) = 1 * 2 【n:3】【ret:6】 f(3) = 3 * f(2) = 3 * 2 * 1 '''
3、python实现十进制转任意进制
![](https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif)
def f(n,x): ''' :param n: n为待转换的十进制数 :param x: x为机制,取值为2-16 :return: 返回转换后的进制数 ''' a=['0','1','2','3','4','5','6','7','8','9','A','B','C','D','E','F'] b=[] while True: s=n//x # 商 y=n%x # 余数 b=b+[a[y]] if s==0: break n=s return "".join(b[::-1]) s = f(26,16) print(s) # 1A
111111111111111