Python学习(4)_整数划分问题算法

整数划分问题算法
例如:6的整数划分问题
6
5+1
4+2,4+1+1
3+3,3+2+1,3+1+1+1
2+2+2,2+2+1+1,2+1+1+1+1
1+1+1+1+1+1
一共有11种划分方法
'''
	整数划分问题
	求出整数划分的个数
	2017年10月18日17:14:13
'''
'''
	整数划分个数
	@param n 需要划分的整数
	@param m
	return sum	整数划分的个数
'''
def f( n, m ):
	'''
		如果n,m都小于1,则无法划分
	'''
	if( n < 1 or m < 1 ):
		return 0
	'''
		如果n=m=1,则只有一种划分方法
	'''
	if( n == 1 and m == 1 ):
		return 1
	'''
		如果m>=n,则和m=n是一样的,递归计算
	'''
	if( n <= m ):
		return 1 + f( n, n - 1 )
	'''
		如果m>n,递归计算
	'''
	return f( n, m-1 ) + f( n - m, m )
	
print( f( 6, 3 ) )


小艾的博客 http://www.aixinyan.me/