相关文章推荐
完美的鸵鸟  ·  带您了解SQL ...·  8 月前    · 
帅气的鼠标  ·  abap delete adjacent ...·  10 月前    · 

本人递归学习的不牢固,因此找了一些与递归相关的编程题做练习,巩固加深印象。

输入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 的直角三角形的 杨辉三角 你好博主报错这个是什么原因? Traceback (most recent call last): File "E:/BPNN/mlp.py", line 36, in <module> print(accuracy_score(predict_results, target_test)) File "C:\Users\jay\anaconda3\envs\PytorchLearning\lib\site-packages\sklearn\utils\_param_validation.py", line 192, in wrapper return func(*args, **kwargs) File "C:\Users\jay\anaconda3\envs\PytorchLearning\lib\site-packages\sklearn\metrics\_classification.py", line 221, in accuracy_score y_type, y_true, y_pred = _check_targets(y_true, y_pred) File "C:\Users\jay\anaconda3\envs\PytorchLearning\lib\site-packages\sklearn\metrics\_classification.py", line 95, in _check_targets raise ValueError( ValueError: Classification metrics can't handle a mix of continuous and multiclass targets Pycharm,出现Invalid VCS root mapping The directory **\**\**\**解决方法 Ericjim: 我也在向这个问题,直接Git就不见了 Pycharm,出现Invalid VCS root mapping The directory **\**\**\**解决方法 chuangzhidian: 我的是git clone 拉项目就可以 Pycharm,出现Invalid VCS root mapping The directory **\**\**\**解决方法 一只小流氓y: 铁子 有解决办法嘛 python,将灰度图像指定像素变为红色,或其他颜色 m0_56276747: 已成功复现,赞赞赞!