Шаблон с рекурсиями (C ++) - PullRequest
0 голосов
/ 01 марта 2012

Я подозреваю, что этот паттерн как-то связан с Фибоначчи, но мне трудно связать это.

Мне нужно использовать только рекурсии.

Я думаю, этот кодпримерно так:

#include <iostream>
#include <conio.h>

using namespace std;

int pattern(int number)
{
    if(number % 3 == 1)
    {
        cout << "--|^++" << endl;
        return number - 1;
    }
    else
    {
        return pattern(number - 1);
    }
}
int main()
{
    int number,newNumber;
    cout << "Please give the number to print" << endl;
    cin >> number;
    newNumber = number * 2;
    pattern(newNumber);

    getch();
}

Что я могу заметить в этом паттерне, что в каждом нечетном числе есть "- | ^ ++".

С 2 и 6 естьa << "- || ^ ++" << endl; </p>

Число 5

--|^++
-||^+++
--|^++
|||^^+++++
--|^++
-||^+++
|||||^^^++++++++

Это уже заняло у меня полдень, мне нужен совет или книга.

Мне нужно решение этого шаблона или кода, разница между "%" и "/" и проверка ошибок.

Ответы [ 2 ]

1 голос
/ 01 марта 2012

else-ветвь никогда не будет принята как ваше второе условие if, всегда истинное:

else if(condition == 2,6)

Запятая - это оператор последовательности, который будет выполнять все подвыражения слева направозначение этого является самым правым подвыражением.

По сути, строка примерно эквивалентна

condition == 2;
if (6)

Условие if считается истинным, если значение не равно нулю, поэтому здесь оно всегда верно.

Если вы намеревались проверить, является ли condition 2 или 6, вы должны указать явно:

else if (condition == 2 || condition == 6)
0 голосов
/ 01 марта 2012

Извините, я не понимаю вашего вопроса. Но есть несколько проблем с вашей функцией 'pattern'

  1. else if(condition == 2,6) - всегда будет верно; как объяснено выше

  2. if(condition % 1) - всегда будет ложным; поскольку любое целое число всегда делится на единицу, это равно, если (0)

  3. функция возвращает не все пути кода; Ваш блок if if должен иметь оператор return

...