【问题标题】:Using the same function in its function definition?在其函数定义中使用相同的函数?
【发布时间】:2016-06-30 22:53:24
【问题描述】:

对不起,如果这是一个愚蠢的问题,但我对编程很陌生。 一直在研究排序,归并排序一直让我头疼。

void part(int arr[],int min,int max)
{
 int mid;
 if(min<max)
 {
   mid=(min+max)/2;
   part(arr,min,mid);
   part(arr,mid+1,max);
   merge(arr,min,mid,max);
 }
}

我不明白如何在函数部分尚未完全定义的情况下在其自己的定义中使用它。另外,我不太明白这是如何工作的。请帮助我理解这一点!

非常感谢任何帮助。谢谢。

【问题讨论】:

  • cprogrammingcodes.blogspot.com/2012/02/merge-sorting.html 这是完整的代码,以防你想看..
  • 查看Recursion
  • 啊,这就是我的假设,但我太害怕接受它了......叹息..是时候挖掘它了。谢谢。
  • 你能用更好的方式表达吗? ..function 部分在它自己的定义中???
  • 函数正在调用自身。在您编写part(arr,min,mid); 时,编译器知道part 函数,因此可以毫无问题地调用它。

标签: c++ c recursion


【解决方案1】:

调用函数只需要声明,函数定义也是一个自动声明(如果尚未声明),而这个自动声明所需的只是函数签名(返回类型、名称、参数,但不是完整的正文)。

没有这个就很难做到recursion,当一个函数调用自己时会发生这种情况。

【讨论】:

    【解决方案2】:

    C++ 区分定义的函数和声明的函数,声明函数的区别只是知道它的签名(所以void part(int arr[],int min,int max)。这对于程序的其他部分调用它来说是足够的信息,而无需它实际上需要一段代码。定义就是定义代码本身的地方。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2020-05-11
      • 1970-01-01
      • 2019-09-07
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-06-10
      相关资源
      最近更新 更多