2016-03-15 71 views
1

对不起,如果这是一个愚蠢的问题,但我很新的编程。 我一直在研究排序,合并排序一直让我头疼。在其功能定义中使用相同的功能?

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); 
} 
} 

我不明白你怎么可以在它自己的定义中使用函数部分,当它甚至还没有完全定义。此外,我真的不明白这是如何工作..请帮我理解这一点!

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

+0

http://cprogrammingcodes.blogspot.com/2012/02/merge-sorting.html 这里是完整的代码,以防万一你想看.. – brood915

+6

看看[递归](https://en.wikipedia .org/wiki/Recursion_(computer_science)) – NathanOliver

+0

ahhh这就是我所设想的,但却不敢接受它......叹了口气。然后再挖掘它。谢谢。 – brood915

回答

2

C++区分定义函数和声明函数,不同之处在于声明一个函数只是为了知道它的签名(所以void part(int arr[],int min,int max)。这就是程序的其他部分调用它的充足信息,没有它实际上需要的代码的机构。该定义是那么代码本身被定义在哪里。

1

所有你需要调用一个函数是其声明和函数定义也是一个自动的声明(如果尚未宣布) ,而这个自动声明所需要的就是函数签名(返回类型,名称,参数,但是不是全身)。

如果没有这个,将很难做到recursion,这是一个函数自己调用时会发生的情况。