没有if或者相关语句的c ++递归(switch,while,for,?:等)

时间:2014-10-20 20:20:19

标签: c++ visual-c++ recursion conditional-statements

我需要做一个没有if或者相关的递归退出条件。要清楚,我只能使用基本语言。没有功能,没有功能指针,没有。我只是想以递归方式调用main()方法(坏方式,我知道),但没有其他方法,我需要确定性地终止程序,所以没有stackoverflow或任何方向,尽管类似hacky命题是受欢迎的。任何想法?

编辑: 这些要求适用于C ++ JAPH。我想使用递归的原因是做一个循环(也不允许)。以下是具体要求:

  • 仅基本变量声明
  • 只有方法/构造sizeof(),getchar(),putchar(),printf()
  • 仅设置变量以及逻辑,算术和布尔运算符
  • 没有自我声明的方法
  • 只有正常运行的代码

1 个答案:

答案 0 :(得分:3)

  

我只是想以递归方式调用main() - 方法(坏风格,我知道)

不仅是糟糕的风格,而且标准明确禁止。您无法拨打main()

  

要明确我只能使用基本语言

我不知道你的意思"基本语言" - 但我猜你并不是指那种名为BASIC的语言。

我也不知道为什么在不使用像if这样的条件的情况下限制你实现递归,我能想到的唯一方法是通过模板元编程。

示例:

template <uint64_t N> uint64_t fact (); 

template <> uint64_t fact <1> ()
{
  return 1;
}

template <uint64_t N> uint64_t fact ()
{
  return N * fact <N-1>();
}

int main()
{
  uint64_t x = fact <3>();
  std::cout << x << "\n";
}