求多项式J: J=j(n个j)
实例:假设n=3,j=5,则J=5+55+555=615
要求:
1.定义两个函数f1(x,y)和f2(x,y)
f1为非递归函数,f2为递归函数。两种不同的方式计算J的值,并返回计算结果。
2.输入的n和j都是正整数,0<j<10
3.在主程序中分别测试f1函数和f2函数,并输出J的值。
j=j+jj+jjj+jjjj+…+j…j(n个j)
def f1(x,y):
s = 0
t = 0
for i in range(x):
t = t*10+y
s += t
return s
def f2(x,y):
if x==1:
return y
t = f2(x-1,y)
return t*10+y*x
if __name__ == "__main__":
n = int(input("请输入n:"))
j = int(input("请输入j:"))
J1 = f1(n,j)
J2 = f2(n,j)
if J1==J2:
print("J:",J1)
else:
print("J1不等于J2")
def f1(x,y):
n=0
m=0
for i in range(x):
n=n+y*10**i
m=m+n
return m
def f2(x,y):
if(x==1):
return y
return f2(x-1,y)*10+x*y
def main():
x=int(input("输入正整数n"))
y=int(input("输入正整数j,0<j<10"))
if(f1(x,y)==f2(x,y)):
print("J值为:"+str(f1(x,y)))
else:
print("失败")
main()
def f1(x,y):
s = 0
for i in range(x):
for j in range(i+1):
s += y*10**j
return s
def f2(x,y):
if(x==1):
return x*y
return f2(x-1,y)*10+x*y
n=int(input("输入正整数n:"))
j=int(input("输入正整数j,0<j<10:"))
J = f1(n,j)
print(f"非递归结果:{J}")
J= f2(n,j)
print(f"递归结果:{J}")
# 整体的思路是每次构建第n个数(jjj...jjj),然后加到结果里。
def f1(n, j):
result = 0
temp = 0
for i in range(1, n+1):
temp = temp * 10 + j
result += temp
return result
# 首先要明确递归的定义,令f2是返回从1个j到n个j相加而成的结果,则f2(1, j) = j,f2(2, j) = j + 10 * f2(1, j) + j, ... , f2(n, j) = j + 10 * (f2(n-1, j) - f2(n-2, j)) + f2(n-1, j),即:先构造出当前项(j + 10 * (f2(n-1, j) - f2(n-2, j))),再加上之前的累加和(f2(n-1, j)),直观但是显得复杂,仅供参考,可以借鉴其他大佬的代码。
def f2(n, j):
if n == 1:
return j # 当前项就是1个j。
if n == 2:
return 10 * j + j + j # 当前项为10*j + j,前一项为j。
return j + 11 * f2(n-1, j) - 10 * f2(n-2, j) # 分析如上。