鱼C论坛

 找回密码
 立即注册
查看: 3669|回复: 14

[已解决]大佬帮我看看

[复制链接]
发表于 2023-2-19 15:41:16 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
为啥我写的不行呀?
最佳答案
2023-2-20 09:14:54
  1. >>> a = [[]] * 10
  2. >>> id(a[0])
  3. 139784198380928
  4. >>> id(a[1])
  5. 139784198380928
  6. >>> a
  7. [[], [], [], [], [], [], [], [], [], []]
  8. >>> a[0].append(42)
  9. >>> a
  10. [[42], [42], [42], [42], [42], [42], [42], [42], [42], [42]]
复制代码

打印杨辉三角

打印杨辉三角

我写的

我写的
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2023-2-19 16:06:33 | 显示全部楼层

                               
登录/注册后可看大图

  1. namespace ConsoleApp1
  2. {
  3.     internal class Program
  4.     {
  5.         static void Main(string[] args)
  6.         {
  7.             const int  n = 10;
  8.             int[,] arr = new int[n,n];
  9.             for (int i = 0; i < n; i++)
  10.             {
  11.                 for (int j = 0; j < n; j++)
  12.                 {
  13.                     if (j==0)
  14.                     {
  15.                         arr[i,j] = 1;
  16.                         Console.Write(arr[i,j] + "  ");
  17.                     }
  18.                     else if (i > j)
  19.                     {
  20.                         if (i==0 || j==0)
  21.                         {
  22.                             continue;
  23.                         }
  24.                         else
  25.                         {
  26.                             arr[i, j] = arr[(i - 1), (j - 1)] + arr[(i - 1), (j)];
  27.                             Console.Write(arr[i, j] + "  ");
  28.                         }
  29.                     }
  30.                     else if (i == j)
  31.                     {
  32.                         arr[i, j] = 1;
  33.                         Console.Write(arr[i, j] + "  ");
  34.                     }
  35.                     else if(i < j)
  36.                     {
  37.                         Console.Write("  ");
  38.                     }
  39.                 }
  40.                 Console.Write("\n");
  41.             }

  42.             Console.ReadKey();
  43.         }
  44.     }
  45. }
复制代码

用的是C#写的,大概思路是这样子的,可以参考一下
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2023-2-19 16:30:04 | 显示全部楼层
wuliangtdi 发表于 2023-2-19 16:06
用的是C#写的,大概思路是这样子的,可以参考一下

大哥,人家是py,而且学C#的很少吧,效率太低了
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2023-2-19 16:35:54 | 显示全部楼层
wuliangtdi 发表于 2023-2-19 16:06
用的是C#写的,大概思路是这样子的,可以参考一下

谢谢你,但是看不懂
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 1 反对 0

使用道具 举报

发表于 2023-2-19 16:52:04 | 显示全部楼层
陈尚涵 发表于 2023-2-19 16:30
大哥,人家是py,而且学C#的很少吧,效率太低了

思路都差不多,而且我这个压根没用啥C#里的集合啥的。效率再低也不比Py差,毕竟Ryujinx使用C#写的,性能不差的
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2023-2-19 17:07:54 | 显示全部楼层
陈尚涵 发表于 2023-2-19 16:30
大哥,人家是py,而且学C#的很少吧,效率太低了



                               
登录/注册后可看大图

  1. package com.ct.Main;

  2. import java.util.Scanner;

  3. public class Main
  4. {
  5.     public static void main(String[] args)
  6.     {
  7.         int  n = 10;
  8.         int[][] arr = new int[n][n];
  9.         for (int i = 0; i < n; i++)
  10.         {
  11.             for (int j = 0; j < n; j++)
  12.             {
  13.                 if (j==0)
  14.                 {
  15.                     arr[i][j] = 1;
  16. //                    Console.Write(arr[i,j] + "  ");
  17.                     System.out.print(arr[i][j] + "  ");
  18.                 }
  19.                 else if (i > j)
  20.                 {
  21.                     if (i==0 || j==0)
  22.                     {
  23.                         continue;
  24.                     }
  25.                     else
  26.                     {
  27.                         arr[i][j] = arr[(i - 1)][(j - 1)] + arr[(i - 1)][(j)];
  28.                         System.out.print(arr[i][j] + "  ");
  29.                     }
  30.                 }
  31.                 else if (i == j)
  32.                 {
  33.                     arr[i][j] = 1;
  34.                     System.out.print(arr[i][j] + "  ");
  35.                 }
  36.                 else if(i < j)
  37.                 {
  38.                     // arr[i, j] = ;
  39.                     System.out.print("  ");
  40.                 }
  41.             }
  42.             System.out.print("\n");
  43.         }

  44.         Scanner input = new Scanner(System.in);
  45.         input.nextInt();
  46.     }
  47. }
复制代码

用java也基本没怎么动,稍微改改就好了
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2023-2-19 20:40:13 | 显示全部楼层
  1. def c(x, y):# 杨辉三角形递归函数

  2.     if y == 1 or y == x: # y=1或y=x时,函数返回值为1

  3.         return 1

  4.     else:

  5.         z = c(x-1, y-1) + c(x-1, y) # y为其他值时的递推公式

  6.         return z

  7. if __name__ == "__main__":

  8.     n = int(input("请输入杨辉三角的行数:"))

  9.     for i in range(1, n+1): # 输出n行

  10.         for j in range(0, n-i+1):

  11.             print("  ", end=" ")

  12.         for j in range(1, i+1):

  13.             # 调用递归函数,输出第i行的第j个值

  14.             print("%6d  " %(c(i, j)), end=" ")

  15.         print()

复制代码
在网上找到的,因为作者说明要注明出处,所以这里发下网址https://www.jianshu.com/p/c086b891179a
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2023-2-20 08:28:57 | 显示全部楼层
@isdkz 大佬帮帮我
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2023-2-20 08:42:13 | 显示全部楼层

我这个不行吗
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2023-2-20 08:51:11 | 显示全部楼层

没仔细看,定义函数还不怎么熟,我想知道上面我写的有什么错误
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2023-2-20 08:55:30 | 显示全部楼层
酷酷的枪手 发表于 2023-2-20 08:51
没仔细看,定义函数还不怎么熟,我想知道上面我写的有什么错误

啊这。。。我也不知道
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2023-2-20 09:14:54 | 显示全部楼层    本楼为最佳答案   
  1. >>> a = [[]] * 10
  2. >>> id(a[0])
  3. 139784198380928
  4. >>> id(a[1])
  5. 139784198380928
  6. >>> a
  7. [[], [], [], [], [], [], [], [], [], []]
  8. >>> a[0].append(42)
  9. >>> a
  10. [[42], [42], [42], [42], [42], [42], [42], [42], [42], [42]]
复制代码
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2023-2-20 09:29:36 | 显示全部楼层
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2023-2-20 11:29:21 | 显示全部楼层
for j in range(i),这里j的取值有问题,i是从0开始的,j也是从0开始,当i=0时,j没有取值范围,另外range(i)也不会出现i==j的情况,改为for j in range(i+1)
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2023-2-20 13:59:15 | 显示全部楼层

好的谢谢你,我懂我错哪里了
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2025-6-10 12:13

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表