题解 | #杨辉三角的变形#
杨辉三角的变形
https://www.nowcoder.com/practice/8ef655edf42d4e08b44be4d777edbf43
# 解法一: 找规律,从杨辉三角的第三行开始循环 while True: try: n = int(input()) res = [2, 3, 2, 4] print(-1 if n < 3 else res[(n - 3) % 4]) except: break # 解法二: 创建递归函数,但递归超过1000层会发生栈溢出 def fun(n): # 创建递归函数 if n == 1: # 结束条件 return [1] # 杨辉三角的第一行,用列表储存数据 else: # 开始递归 team = [0, 0] + fun(n - 1) + [0, 0] # 补0,扩充fun(n-1)的有效长度,同时递归fun(n-1) ans = [] # 创建空列表储存递归列表数据 for i in range(n * 2 - 1): # len(fun(n)) = 2n-1 ans.append(team[i] + team[i + 1] + team[i + 2]) # fun(n)的每一项为扩充fun(n-1)的每三项之和 return ans # fun(n)的列表数据 while True: try: n = int(input()) # 输入整数n(杨辉三角的第n行) if n < 3: # 判断n的值 print(-1) # 杨辉三角前两行无偶数,输出-1 else: # 开始循环 for i in range(n * 2 - 1): # 遍历fun(n) if fun(n)[i] % 2 == 0: # 第一个偶数的下标 print(i + 1) # 下标+1即为所求 break # 退出循环 # 打印杨辉三角的每一项,供辅助理解 for i in range(1, n + 1): # 开始循环 print("\t" * (n - i), end="") # 打印空格 print("\t".join(map(str, fun(i)))) # 打印杨辉三角 except: break#我的实习求职记录#