本人递归学习的不牢固,因此找了一些与递归相关的编程题做练习,巩固加深印象。
输入n值,使用递归函数,求杨辉三角形中各个位置上的值,按照如下形式打印输出图形。例如:当n=6时。
1 1
1 2 1
1 3 3 1
1 4 6 4 1
1 5 10 10 5 1
解题思路:
首先观察规律:
1.每一行的行首和行尾都为1;
2.每行数字的个数与行首相同;
3.第n行的第m个数是由第n-1行中第m-1和m数之和。
代码如下:
def yang(i,j): #i为行,j为列
if j==0 or j==i:
return 1
else:
return yang(i-1,j)+yang(i-1,j-1)
for i in range(0,7):
print()
for n in range(0,7-i):
print(" ",end="")#控制每一行前面的空格
for j in range(0,i+1):
print(yang(i,j),"",end="")
运行结果图:
本人递归学习的不牢固,因此找了一些与递归相关的编程题做练习,巩固加深印象。题目:输入n值,使用递归函数,求杨辉三角形中各个位置上的值,按照如下形式打印输出图形。例如:当n=6时。 1 1 1 1 2 1 1 3 3 1 1 4 6 ...
1.1 简介
杨辉三角
,是二项式系数在三角形
中
的一种几何排列,
中
国南宋数学家杨辉1261年所著的《详解九章算法》一书
中
出现。在欧洲,帕斯卡(1623----1662)在1654年发现这一规律,所以这个表又叫做帕斯卡三角形。帕斯卡的发现比杨辉要迟393年,比贾宪迟600年。
1.2...
输出10
行
的
杨辉三角形
杨辉三角
,是二项式系数在三角形
中
的一种几何排列。
每
行
端点与结尾的数为1,其余每个数字等于上一
行
的左右两个数字之和。可用此性质写出整个
杨辉三角
。即第n+1
行
的第i个数等于第n
行
的第i-1个数和第i个数之和。即 C(n+1,i)=C(n,i)+C(n,i-1)。
杨辉三角形
又称Pascal三角形,它的第i+1
行
是(a+b)i的展开式的系数。
它的一个重要性质是:三角形
中
的每个数字等于它两肩上的数字相加。
下面给出了
杨辉三角形
的前4
行
:
1 2 1
1 3 3 1
给出n,输出它的前n
行
。
输入
格式
输入
包含一个数n。
输出
杨辉三角形
的前n
行
。每一
行
从这一
行
的第一个数开始依次输出,
中
间
使用
一个空格分隔。请不要在前面输出多余的空格。
样例
输入
杨辉三角形
又称Pascal三角形,它的第i+1
行
是(a+b)i的展开式的系数。
它的一个重要性质是:三角形
中
的每个数字等于它两肩上的数字相加。
下面给出了
杨辉三角形
的前4
行
:
1 2 1
1 3 3 1
给出n,输出它的前n
行
。
输入
格式
输入
包含一个数n。输出格式
输出
杨辉三角形
的前n
行
。每一
行
从这一
行
的第一个数开始依
杨辉三角形
又称Pascal三角形,它的第i+1
行
是(a+b)i的展开式的系数。
它的一个重要性质是:三角形
中
的每个数字等于它两肩上的数字相加。
下面给出了
杨辉三角形
的前4
行
:
1 2 1
1 3 3 1
给出n,输出它的前n
行
。
输入
格式
输入
包含一个数n。
输出
杨辉三角形
的前n
行
。每一
行
从这一
行
的第一个数开始依次输出,
中
间
使用
一个空格分隔。请不要在前面输出多余的空格。
样例
输入
for i in range(len(last_row)-1):
new_row.append(last_row[i]+last_row[i+1])
new_row.append(1)
triangle.append(new_row)
return triangle
def print_triangle(n):
triangle = pascal_triangle(n)
for row in triangle:
print(' '.join(str(num) for num in row))
print_triangle(5)
输出结果为:
1 2 1
1 3 3 1
1 4 6 4 1
其
中
,pascal_triangle函数
使用
递归实现
杨辉三角形
的生成,print_triangle函数用于输出结果。
### 回答2:
杨辉三角形
是一种数列,它从三角形的顶部开始向下延伸。其
中
,每一
行
的两端都是1,每个数字都是上一
行
相邻两个数字之和。这个三角形的性质非常有趣,不仅在计算组合和二项式系数方面有用,而且也在概率论
中
被广泛应用。
对于这个题目,我们可以通过编写
递归函数
,不断计算每
行
的数字,并输出它们。下面是代码示例:
def pascal_triangle(n):
if n == 1:
print("1")
return ["1"]
else:
prev_line = pascal_triangle(n-1)
current_line = ["1"]
for i in range(len(prev_line)-1):
current_line.append(str(int(prev_line[i])+int(prev_line[i+1])))
current_line.append("1")
print(" ".join(current_line))
return current_line
n = int(input("请
输入
一个正整数n:"))
if n<1 or n>10:
print("n应在1-10之间")
else:
pascal_triangle(n)
这个函数接受一个整数n作为参数,然后调用自身,计算分
行
的数字。对于每一
行
,我们首先检查是否到达了第一
行
(也就是递归的结束点)。如果是的话,我们只打印一个数字1,否则我们会计算前一
行
的数字,并在新
行
中
添加一个数字。最后,我们会将新
行
打印到控制台,并返回新
行
,以便我们可以在后续的递归调用
中
使用
它。最后,我们将函数应用于用户
输入
的数字n,并检查是否在有效范围内。如果是,我们会输出
杨辉三角形
;否则,我们会打印出错误消息。
### 回答3:
杨辉三角
是数学
中
的一个重要概念,其形态如下:
1 1
1 2 1
1 3 3 1
1 4 6 4 1
1 5 10 10 5 1
其
中
,每一
行
的数字都是上一
行
的相邻数字之和。
要输出直角三角形的
杨辉三角
,即输出前n
行
的
杨辉三角形
。我们可以
使用
递归函数
来实现。
首先,我们需要明确
递归函数
的
输入
与输出。
递归函数
的
输入
是一个整数n,表示要输出前n
行
的直角三角形的
杨辉三角
;输出是一个n
行
的
杨辉三角形
。
其次,我们需要考虑
递归函数
的递归终止条件。当n等于1
时
,输出的
杨辉三角形
就是第一
行
的“1”。
然后,我们需要考虑
递归函数
的递归过程。当n大于1
时
,我们可以
使用
递归函数
来输出前n-1
行
的
杨辉三角形
,然后再输出第n
行
的
杨辉三角形
。
最后,我们需要考虑如何输出直角三角形的
杨辉三角
。我们可以
使用
空格来调整数字的
位置
,使得输出的
杨辉三角形
呈直角三角形。
根据以上思路,我们可以写出如下的
递归函数
:
def pascal(n):
if n == 1:
return [[1]]
else:
triangle = pascal(n - 1)
row = [1]
for i in range(n - 2):
row.append(triangle[-1][i] + triangle[-1][i + 1])
row.append(1)
triangle.append(row)
return triangle
def print_triangle(n):
triangle = pascal(n)
max_width = len(str(triangle[-1][-1]))
for i in range(n):
for j in range(i + 1):
print(str(triangle[i][j]).rjust(max_width), end=' ')
print()
我们先定义了一个pascal函数,用来生成
杨辉三角
。当n等于1
时
,返回一个包含“1”的列表;当n大于1
时
,生成n-1
行
杨辉三角
并计算第n
行
的数字,最后加入该
行
并返回整个
杨辉三角
。
然后,我们再定义一个print_triangle函数,用来输出直角三角形的
杨辉三角
。首先,我们通过pascal函数生成一个包含n
行
杨辉三角
的列表。然后,我们需要计算每个数字的最大宽度,用来调整数字的
位置
。最后,我们
使用
两个嵌套的for循环来输出直角三角形的
杨辉三角
。
我们可以
使用
如下方式来测试该函数:
print_triangle(5)
输出结果如下:
1 2 1
1 3 3 1
1 4 6 4 1
我们可以看到,该函数能够正确输出前5
行
的直角三角形的
杨辉三角
。
Pycharm,出现Invalid VCS root mapping The directory **\**\**\**解决方法
Ericjim:
Pycharm,出现Invalid VCS root mapping The directory **\**\**\**解决方法
chuangzhidian:
Pycharm,出现Invalid VCS root mapping The directory **\**\**\**解决方法
一只小流氓y:
python,将灰度图像指定像素变为红色,或其他颜色
m0_56276747: