Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/356.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
用Python编程处理非常大的数字 当我们谈论我们的代码的复杂性时,我们考虑输入的数量。通常我们不太考虑下铺设硬件实现。为了获得代码复杂度和我们组成算法(代码)的输入数量之间的连接性,我们通常使用Big_O符号。循环是实现算法的基本要素,但它具有O(n)复杂度,这意味着时间将随着输入数量的增加而线性增长,因此大量输入会导致效率低下。但是我们可以用递归来代替循环,因为递归总是有O(logn)的时间复杂度,我不打算在这里澄清它。从以上所有这些中,我想说递归比循环更有效_Python_Algorithm_Recursion - Fatal编程技术网

用Python编程处理非常大的数字 当我们谈论我们的代码的复杂性时,我们考虑输入的数量。通常我们不太考虑下铺设硬件实现。为了获得代码复杂度和我们组成算法(代码)的输入数量之间的连接性,我们通常使用Big_O符号。循环是实现算法的基本要素,但它具有O(n)复杂度,这意味着时间将随着输入数量的增加而线性增长,因此大量输入会导致效率低下。但是我们可以用递归来代替循环,因为递归总是有O(logn)的时间复杂度,我不打算在这里澄清它。从以上所有这些中,我想说递归比循环更有效

用Python编程处理非常大的数字 当我们谈论我们的代码的复杂性时,我们考虑输入的数量。通常我们不太考虑下铺设硬件实现。为了获得代码复杂度和我们组成算法(代码)的输入数量之间的连接性,我们通常使用Big_O符号。循环是实现算法的基本要素,但它具有O(n)复杂度,这意味着时间将随着输入数量的增加而线性增长,因此大量输入会导致效率低下。但是我们可以用递归来代替循环,因为递归总是有O(logn)的时间复杂度,我不打算在这里澄清它。从以上所有这些中,我想说递归比循环更有效,python,algorithm,recursion,Python,Algorithm,Recursion,任何可以做循环的事情,我们都可以通过递归更有效地做同样的事情 所以我在电话里发现了一个问题 下面是我的问题 系列,11+22+33+…+1010 = 10405071317. 找到序列的最后十位,11+22+33+…+10001000。 这个问题似乎很简单,所以我从Python实现了我的代码,并且它在较小的数字范围内工作得很顺利,但是获得1000到1000的幂和上述所有Python的总和通常会显示一个错误(因为数字非常大,足以在Python的内存流中出现),那么我如何得到答案呢。下面是我的代码

任何可以做循环的事情,我们都可以通过递归更有效地做同样的事情

所以我在电话里发现了一个问题

下面是我的问题

系列,11+22+33+…+1010 = 10405071317. 找到序列的最后十位,11+22+33+…+10001000。

这个问题似乎很简单,所以我从Python实现了我的代码,并且它在较小的数字范围内工作得很顺利,但是获得1000到1000的幂和上述所有Python的总和通常会显示一个错误(因为数字非常大,足以在Python的内存流中出现),那么我如何得到答案呢。下面是我的代码

def f(n):
    if n==1:
        return 1
    else:
        return n**n+f(n-1)

所以我的问题是如何解决这个问题,以及如何处理这些非常大的数字,如何管理这些将在大量整数上发生的异常,请提及好的激励算法?

没有任何东西可以使递归本质上更有效。此外,由于函数调用开销,使用递归实现的相同算法可能效率较低。更糟糕的是,这正是您的情况,使用大深度的递归可能会导致堆栈溢出(没有双关语)。除非使用了尾部递归优化,这在Python中是不存在的


Python对整数大小没有任何限制(在合理范围内),这不是问题所在。使用循环重新实现该函数,您会做得很好。除了
n**n
没有做你认为它做的事情。

你在哪里发现这个“递归总是有O(logn)时间复杂度”?@vish4071递归的单个实现有O(logn)1。递归并不总是具有时间复杂性。2.循环不一定有O(n)复杂性,例如这一个:
for(inti=1;i
为什么那些人用我的问题来代替answer@Heathens“为什么那些人用我的问题来回答”因为stackoverflow不仅仅是一个网站,你来这里是为了得到答案。它的目的是将问题和答案存档,这样问自己同样问题的人可以找到已经存在的答案,并且随着时间的推移这些答案已经得到了改进。因此有了“编辑”功能。但问题也必须是高质量的,才能有用。在你的问题中,你声称事情要么是错误的,要么不总是正确的,这可能会给读者错误的知识。@vish4071试试看。对不起……我的坏@berealOh是的。。。。。。。。!!!谢谢你的天才