Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/spring-mvc/2.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
Programming languages 写尽可能长的循环_Programming Languages_Loops_Computer Science - Fatal编程技术网

Programming languages 写尽可能长的循环

Programming languages 写尽可能长的循环,programming-languages,loops,computer-science,Programming Languages,Loops,Computer Science,最近我在一次技术讨论中被问到这个问题。考虑到运行循环的机器/架构,在计算科学中可以编写的最长循环是什么?此循环必须尽可能长,但不是无限循环,并且不应导致程序崩溃(递归等) 老实说,我不知道如何解决这个问题,所以我问他这是否切实可行。他说,使用一些计算机科学的概念,你可以得出一个假设的数字,这个数字可能不实用,但它仍然不是无限的 这里的任何人;知道如何分析/解决这个问题 另外,为能够存储最高数值的类型选择某个最高限值显然不是答案 提前谢谢,请仔细阅读忙碌的海狸问题 最大可能的有限值?作为一名数学家

最近我在一次技术讨论中被问到这个问题。考虑到运行循环的机器/架构,在计算科学中可以编写的最长循环是什么?此循环必须尽可能长,但不是无限循环,并且不应导致程序崩溃(递归等)

老实说,我不知道如何解决这个问题,所以我问他这是否切实可行。他说,使用一些计算机科学的概念,你可以得出一个假设的数字,这个数字可能不实用,但它仍然不是无限的

这里的任何人;知道如何分析/解决这个问题

另外,为能够存储最高数值的类型选择某个最高限值显然不是答案


提前谢谢,

请仔细阅读忙碌的海狸问题


最大可能的有限值?作为一名数学家,我觉得这很可笑。也许可以更好地解释这个问题。

您正在进入图灵机领域

简单地说(让我们停留在确定性字段中…)您的计算机/机器可以处于算法期间传递的有限数量的状态。每一种状态都是独一无二的,只有一次,否则你会被定义成一个无止境的循环。比如“goto”。 我们可以消除这个限制,但这没有多大意义,因为这样就可以找到一个简单的算法,它总是比所有其他可能的算法多运行一次循环

因此,它取决于机器可能的状态,你可以天真地用“它的ram”来翻译这些状态


所以现在的问题是:在一台机器上,可能处于X几种状态的最长循环是什么?wikipedia给出了

如果我们谈论语言限制,那么,有些语言定义了任意精度的整数(比如Python和Common Lisp),因此您可以根据语言的不同数到任意数量。对于任何实际机器,您都可以轻松地将其设置得太大,但这不是语言限制

就实际机器的数量而言,这是一个可能状态的数量问题。对于可以分配为计数器的每一位(它不必是一个数据元素,因为创建任意长度的计数器非常容易),这是两种状态,因此如果您有8G可用内存,您可以使用它来计算2^8G。当然,您可以使用文件系统来获得更多的计数器空间

或者,假设您没有使用物理可逆计算,您可以检查翻转一点所需的最小能量,除以可用能量(如总预期太阳能输出或其他),并获得一个限制

特定复杂度的图灵机有一个极限。它涨得很快

可能的答案太多,无法提供一个。

如果“长”表示时间,那么下面的有限循环应该是一个不错的选择:

for(unsigned long long i = 0; i < ULONG_LONG_MAX; ++i) sleep(UINT_MAX);
for(unsigned long long long i=0;i

好吧,这个答案不是很严肃,但实际上我的观点是,在面试中问这个问题是完全没有用的。为什么?根据S.Lott的回答,这可能与忙碌的海狸问题有关,这个问题已经有将近50年的历史了,完全不为人所知,因为没有人能在真正的工作中利用它。

我很好奇从中得到什么样的答案。我不禁回想起我的离散课程,学习最小的可数无限数集+1好话题!定义长度。该跑了?迭代次数?@Joseph:没有定义的长度、时间或限制。我认为这是一个计算机科学理论测试,你需要得到一个最大可能数,而不是无限循环。@Abhay:需要澄清。在我的回答中,我列出了四个可能的问题。@David:我同意你回答中的可能性。但从计算机科学的角度来看,“忙碌的海狸”接近于答案。我把“编程语言”改为“计算科学”。让我知道问题是否切中要害。是的,我想这就是我开始分析问题的方式。但这也可能是一个无限循环,所以这不是op想要的。但答案很好+1@Oops:“这也可能是一个无限循环”?真正地Wikipedia上引用了这样一句话:“这类图灵机必须符合某些设计规范,并且在使用空白磁带启动后最终必须停止。”。这是错误的吗?繁忙的海狸问题允许无限磁带,这使它能够拥有比我认为的普通计算机更长的具有有限状态数的循环。@慷慨:无限磁带与非终止磁带不同。“无限磁带”是一种数学形式主义,它仅仅消除了一个任意的上限。繁忙的beaver算法必须停止,这一事实使它们变得有限。但繁忙的Beaver程序可以在相对较少的状态下运行非常长(但不是无限长)的时间是因为它可以访问所需的磁带。给忙碌的海狸一个有限的磁带,你会发现边界下降了很多。