递归模式(C ++)

时间:2012-03-01 11:44:05

标签: c++ recursion variable-assignment

我怀疑这种模式与斐波纳契有关,但我很难将其联系起来。

我只能使用递归。

我认为代码有点像这样。

#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,存在&lt;&lt; “ - || ^ ++”&lt;&lt; ENDL;

数字是5

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

这已经过了我的下午,我需要建议或书。

我需要这种模式或代码的解决方案,“%”和“/”之间的区别以及错误检查。

2 个答案:

答案 0 :(得分:1)

else分支永远不会被视为你的第二个if条件总是如此:

else if(condition == 2,6)

逗号是序列运算符,它将从左到右运行所有子表达式,并且它的值是最右边的子表达式。

实际上,该线大致相当于

condition == 2;
if (6)

如果值不为零,则认为if条件为真,因此,此处始终为真。

如果您打算测试condition是2还是6,那么您必须明确:

else if (condition == 2 || condition == 6)

答案 1 :(得分:0)

对不起,我不明白你的问题。但是你的“模式”功能存在一些问题

  1. else if(condition == 2,6) - 永远是真的;如上所述

  2. if(condition % 1) - 永远都是假的;因为任何整数总是可以被1整除,所以它等于if(0)

  3. 该函数不会在所有代码路径上返回;如果块应该有一个返回语句