Java实现n×n矩阵对角线填充:不用abs方法仅用循环可行吗?
不用abs方法实现n×n对角线填充矩阵
没问题,完全可以只用循环+基础条件判断实现需求,核心是通过比较行、列索引的大小,直接计算出替代abs的非负差值:
对于矩阵中任意位置(i, j),其对应的值就是行号i和列号j之间的“距离”——当i >= j时取i - j,当i < j时取j - i,这和abs(i-j)的结果完全一致,但不需要调用abs方法。
以下是Python实现示例:
n = int(input("输入n(≤100):")) matrix = [] # 遍历每一行 for i in range(n): current_row = [] # 遍历当前行的每一列 for j in range(n): # 条件判断计算非负差值 if i >= j: current_val = i - j else: current_val = j - i current_row.append(current_val) matrix.append(current_row) # 打印验证结果 for row in matrix: print(row)
这段代码全程只用了嵌套循环和if-else条件判断,完全符合“仅用循环、不使用abs方法”的要求。无论n是1到100之间的哪个整数,都能生成符合规则的矩阵:主对角线(i=j)值为0,紧邻主对角线的两条对角线值为1,再外层的两条对角线值为2,以此类推。
内容的提问来源于stack exchange,提问作者Evelyn
相关产品推荐
相关产品推荐

