Computer science 递归集与递归函数

Computer science 递归集与递归函数,computer-science,theory,formal-languages,Computer Science,Theory,Formal Languages,递归集和递归函数有什么区别 也许问题应该是“为什么用‘递归’这个词来描述集合和函数?” 正如格雷格·休吉尔(Greg Hewgill)在评论中指出的,“绿色”一词可以用于苹果和汽车,但这并不意味着苹果和汽车之间存在关系 我认为维基百科的引用使用了术语“递归”作为“可计算”的同义词,作为程序员,我们会谨慎地同意这一点,但仅在某些情况下。递归函数和递归集是可计算性理论中使用的术语。维基百科对它们的定义如下: 一组自然数被称为可计算集(也称为可判定、递归或图灵可计算集),如果有一个图灵机器,给定一个数

递归集和递归函数有什么区别

也许问题应该是“为什么用‘递归’这个词来描述集合和函数?”

正如格雷格·休吉尔(Greg Hewgill)在评论中指出的,“绿色”一词可以用于苹果和汽车,但这并不意味着苹果和汽车之间存在关系


我认为维基百科的引用使用了术语“递归”作为“可计算”的同义词,作为程序员,我们会谨慎地同意这一点,但仅在某些情况下。递归函数和递归集是可计算性理论中使用的术语。维基百科对它们的定义如下:

一组自然数被称为可计算集(也称为可判定、递归或图灵可计算集),如果有一个图灵机器,给定一个数n,如果n在该集合中,则停止输出1,如果n不在该集合中,则停止输出0。如果有一个图灵机在输入n时停止并返回输出f(n),则从自然数到自身的函数f是递归或(图灵)可计算函数


在这种情况下,递归函数并不意味着编程语言中调用自身的函数。满足上述定义要求的任何数学函数都是递归函数,包括简单的函数,如标识函数或将所有数字映射为1的函数(即,返回数字1而不考虑输入)。

这些术语的含义因上下文而异。如果我们纯粹从编写程序的角度来讨论它们,那么递归集就没有多大意义;然而,可能只是我遇到了它。也就是说,递归函数是在执行过程中调用自己的函数。n的计算是常见的经典示例:

/// <summary>A C# implementation of a function to return the nth Fibonacci number.</summary>
private static int Fibonacci(int n) {
 if (n <= 2) {
  return 1;
 } else {
  return Fibonacci(n - 1) + Fibonacci(n - 2);
 }
}
///返回第n个斐波那契数的函数的C#实现。
私有静态int Fibonacci(int n){

如果(n)集和函数是两个完全不同的东西,“递归”只是一个形容词。绿色的苹果和绿色的汽车有什么区别?它们都是绿色的!!…哦,你的意思是有什么区别…至少在灰色地带。这肯定是计算机科学,但可能不是编程,这取决于界线在哪里。不,我不生气。-1。我在读可计算性、复杂性和语言David和Weyuker的ges以及Sipser的计算理论。我知道他们被称为这样的原因。这是你的特权。我把我们称为“程序员”是不是错了?对不起,但大多数SO用户都为这个头衔感到骄傲。