я должен был напечатать 5,4,3,2,1 согласно заявлению о проблеме, но мой код C ++ показывает некоторую ошибку - PullRequest
0 голосов
/ 30 апреля 2020

ОШИБКА я получаю

F: \ coding \ code blocks \ hello.cpp | 14 | ошибка: нет совпадения для оператора «<<» (типы операндов: «std :: ostream» {aka std :: basic_ostream} 'и' void ') | </p>

мой код

    #include <iostream>
    using namespace std;

    void fun(int n)
    {

        if (n==0) return;
        cout<<n<<endl;
        fun(n-1);
    }
    int main()
    {

        cout << fun(5)<< endl;

    }

Ответы [ 3 ]

1 голос
/ 30 апреля 2020

в основной функции. вместо записи

cout<<fun(5)<<endl;

напишите так.

fun (5);

1 голос
/ 30 апреля 2020

Ваш код имеет две проблемы:

  1. fun Тип возврата void. Таким образом, это:
cout << fun(5) << endl;

не может работать должным образом. Чтобы использовать значение void, функция возврата вызывает неопределенное поведение.

Печать в main из n в целом является избыточной, поскольку вы уже печатаете ее в fun().


Скорее сделайте это как:

#include <iostream>
using namespace std;

int fun(int n)
{
    if (n == 0) 
       return;

    cout << n << endl;

    fun(n - 1);
}

int main(void)
{
    fun(5);

    return 0;
}
0 голосов
/ 30 апреля 2020

Ваша функция fun возвращает void, также нет необходимости использовать cout дважды, используйте его либо в main, либо в теле функции fun. Попробуйте этот код, чтобы получить вывод "согласно вашей формулировке проблемы":

#include <iostream>
using namespace std;

int fun(int n)
{
    if (n==0) 
       return 0;
    ((n-1)==0)?(cout<<n<<endl):(cout<<n<<",");
    fun(n-1);
}
int main()
{
    fun(5);
    return 0;
}
...