辛荑啊 发表于 2020-10-26 12:06:58

求大佬看一下这个问题,以及改进方法(小白太难了)

图片是我需要完成的计算,我看见这个式子的时候就感觉可以用递归,所以就尝试了一下,但是发现写不出来,然后就想着,干脆分开写,因此我把后面两个用for循环写出来了,但是前面这个y(n+1)和y(n)我感觉应该是递归简单些,
所以就准备直接在写出的代码最前面加 def z(n):   然后最后加上return 0.905*z(n-1)+x+x1   但是写出这个代码后,运行是可以运行,但是会出现图二这种情况。如果def和两个for循环并列就不会执行,想请问大佬这个怎么解决呢,或者
有什么其它的代码吗?想参考一下{:5_109:} {:5_109:}
ps.程序中有i*0.1和a*0.1是因为要求是0.1为间距来取,所以我用的整数*0.1,应该就是按0.1来取距离了把

number=int(input('请输入数字:'))
x=0
for i in range(number):
    x=i*0.1*0.5*0.9*(1+i*0.1)
print(x)



num1=int(input('请输入一个数字:'))
x1=0
for a in range(num1+1):
    x1=0.5*0.1*a*0.1*(a*0.1+1)
print(x1)

笨鸟学飞 发表于 2020-10-26 15:47:59

number=int(input('请输入数字:'))
x=0         #无意义,x第一次出现是赋值语句,这里不需要初始化赋值
for i in range(number):
    x=i*0.1*0.5*0.9*(1+i*0.1) #你这个循环用来干嘛的?这个经过一整轮无意义的循环,实际就是最后一次循环在运算(i=number-1)
print(x)
=======实在是你手写的和你代码结合看我根本看不懂,可能我学历太低,只能帮你到这了========

辛荑啊 发表于 2020-10-26 18:51:02

笨鸟学飞 发表于 2020-10-26 15:47
=======实在是你手写的和你代码结合看我根本看不懂,可能我学历太低,只能帮你到这了========

其实最开始是没有这个def,我只有这两个for循环,我把print放在for外面是为了只得到最后一轮得那个值,然后用最后一轮的那个值再来进行后面的计算{:10_266:}。我现在就很想知道,用递归的话,怎么把我手写出来的这个表达式用代码实现,因为他同时有了3个需要递归的数(y(n),a(n),a(n+1)),确实不知道这个怎么弄

笨鸟学飞 发表于 2020-10-26 20:54:51

非要用递归吗?条条大路通罗马,递归也并不是很科学的方法啊,似乎听说递归比循环更消耗资源。。。
只是对于某些人来说递归更好理解,代码更简洁而已。。。
页: [1]
查看完整版本: 求大佬看一下这个问题,以及改进方法(小白太难了)