2017-01-15 5 views
-3

Я пытаюсь вывести простой массив с использованием рекурсии и вот мой код:Выходной массив с использованием рекурсии

#include <iostream> 
using namespace std; 


int first7(int *aptr, int n) { 
    if(n == 0){ 
     return 0; 
    } 
    first7(aptr+1,n-1); 
    cout<<*aptr; 
    return 0; 


} 
int main(){ 
    int arr[50],n; 
    cin>>n; 
    for(int i=0; i<n; i++){ 
     cin>>arr[i]; 
    } 
    first7(arr, n); 
    return 0; 
} 

Я хотел вывести его, начиная с 0-го индекса. но оказалось наоборот.

1.пожалуйста сообщите мне, что не так с моим кодом?

2.Что я должен сделать, чтобы показать, что, начиная с 0-го индекса и так далее

3.Если я удалить return 0 заявление после cout заявления, то и она отлично работает. Как оно?

+1

Печать * перед тем * вы рекурсивно. – BoBTFish

ответ

0

Вы должны напечатать деталь, прежде чем рекурсию:

void first7(int *aptr, int n) 
{ 
    if(n == 0) 
    { 
    return; 
    } 

    cout << *aptr; 
    first7(aptr+1, n-1); 
} 

Обратите внимание, что там также нет необходимости возвращать значение, поэтому я удалил это.

Если вы хотите вывести массив в обратном порядке, то просто сделать рекурсию перед печатью:

void first7(int *aptr, int n) 
{ 
    if(n == 0) 
    { 
    return; 
    } 

    first7(aptr+1, n-1); 
    cout << *aptr; 
} 

Вы просили о return заявлении в комментариях. Вам нужно только оператор return для выхода до конца функции. Когда функции дойдут до последней строки, она автоматически вернется, если вы ничего не сделаете. Если вы не уверены в этом, просто запустите код через отладчик и посмотрите, что произойдет.

+0

Почему вы ничего не пишете после ключевого слова return? Я получаю сообщение об ошибке, когда я не пишу ничего после ключевого слова return. –

+0

@varunsharma - потому что я изменил тип возврата на 'void', поэтому после ключевого слова' return' не должно быть ничего. – Sean

+0

поэтому, если я хочу вывести массив в обратном порядке, мне придется перевернуть 'cout << * aptr;' с помощью 'first7 (aptr + 1, n-1)' statment. Правильно? Итак, как элемент управления вернется к предыдущим элементам, после отображения последнего элемента без инструкции 'return'? –

Смежные вопросы