python中的递归数字三角形
我试图创建一个三角形,如下所示:python中的递归数字三角形,python,function,recursion,numeric,Python,Function,Recursion,Numeric,我试图创建一个三角形,如下所示: 1 2 3 4 5 6 2 3 4 5 6 3 4 5 6 4 5 6 5 6 6 不使用while、for in、list等,只使用“if-else”用例和递归函数。我刚刚学会了如何画一个星号三角形 def triangle(i, t=0): if i == 0: return ' ' else: print '*' * i return triangle( i - 1, t + 1 ) tr
1 2 3 4 5 6
2 3 4 5 6
3 4 5 6
4 5 6
5 6
6
不使用while、for in、list等,只使用“if-else”用例和递归函数。我刚刚学会了如何画一个星号三角形
def triangle(i, t=0):
if i == 0:
return ' '
else:
print '*' * i
return triangle( i - 1, t + 1 )
triangle(6)
这与我想在练习中应用的想法相同,但我真的不知道如何处理逐项更改的代码,并像下面这样将它们全部打印到右边。您可以使用range()
或xrange()
获得数字列表,并通过每次递归减小范围:
def triangle(i, t):
if i == t:
return i
else:
print " ".join([str(x) for x in range(i,t+1)])
return triangle( i + 1, t )
def triangle(size, col = 1, row = 1):
if col < size:
print col,
triangle(size, col+1, row)
else:
print col
if row < size:
triangle(size, row+1, row+1)
输出:
>>> triangle(1,6)
1 2 3 4 5 6
2 3 4 5 6
3 4 5 6
4 5 6
5 6
6
>>> triangle(1,8)
1 2 3 4 5 6 7 8
2 3 4 5 6 7 8
3 4 5 6 7 8
4 5 6 7 8
5 6 7 8
6 7 8
7 8
8
我建议这样做:
def triangle(i, t = 1):
if i > 0:
print ' '.join([str(n+t) for n in range(i)])
triangle( i - 1, t + 1 )
范围
为您提供了每个级别所需的数字列表,而t
偏移量增加了一个,因此您从每个级别的较高值开始
更新
我刚刚注意到您对in和list的no要求,这可能使上述示例出错。下面是另一个仅使用递归的建议:
def triangle(i, t):
if i == t:
return i
else:
print " ".join([str(x) for x in range(i,t+1)])
return triangle( i + 1, t )
def triangle(size, col = 1, row = 1):
if col < size:
print col,
triangle(size, col+1, row)
else:
print col
if row < size:
triangle(size, row+1, row+1)
def三角形(大小,列=1,行=1):
如果col<尺寸:
打印颜色,
三角形(大小,列+1,行)
其他:
打印颜色
如果行<大小:
三角形(大小,第+1行,第+1行)
这是我的解决方案。请注意,既没有范围
也没有连接
,这意味着用于
或列表
In [1]: def tri(size, row = 0, col = 0):
...: if row < size:
...: num = row + col + 1
...: if num == size + 1:
...: print '\n',
...: tri(size, row + 1, 0)
...: if num <= size:
...: print num, '',
...: tri(size, row, col + 1)
...:
In [2]: tri(6)
1 2 3 4 5 6
2 3 4 5 6
3 4 5 6
4 5 6
5 6
6
通过递归调用函数,您实现了一种循环。
现在,您可以复制相同的想法:
def OneLess(i,j):
print i,
if i < j:
OneLess(i+1,j)
else:
print ""
def triangle(i, t=1):
OneLess(t,i)#print '*' * i
if i == t:
return ' '
return triangle( i , t + 1 )
triangle(6)
def OneLess(i,j):
打印i,
如果i