【问题标题】:How do I use a "wrapper function" to call a recursive function without parameters n amount of times?如何使用“包装函数”调用不带参数的递归函数 n 次?
【发布时间】:2016-08-06 21:42:59
【问题描述】:

因此,对于家庭作业,我们必须定义黄金比例的部分分数(n +(1/(n + 1/(.....)),但我们需要递归地进行。好吧,不是问题我可以这样做....但是我们需要调用这个递归函数1000次并且不能使用参数函数。教授说将它限制为有限的调用次数我们可以使用包装函数,但我从未听说过这个学期在课堂上,不知道从哪里开始包装函数?有人可以帮我吗?

如果您能告诉我如何在不向我发送部分分数部分本身的解决方案的情况下做到这一点,我在这门课上表现不佳,想自学。我只需要包装器功能的帮助。谢谢!

【问题讨论】:

  • 那么像头文件?还是程序本身的功能?我该如何计算呢?抱歉,我好像在按@Joachim Pileborg

标签: c++ function recursion wrapper


【解决方案1】:

“包装函数”是一个包装另一个函数的函数。它本质上是另一个调用实际函数的函数。

作为一个简单且不相关的示例,假设您想要获得x10 的最大值。你可以像value = std::max(x, 10) 一样直接调用std::max,但是你不想一直传递值10,所以你创建了一个wrapper 函数:

int max10(int x)
{
     return std::max(x, 10);
}

函数max10是一个包装函数。


您的问题的一个可能解决方案是不使实际函数递归,而是使包装函数。包装函数将采用一个参数n,它是它应该进行的递归次数。如果n 大于零,则调用实际函数,然后使用参数n - 1 递归调用包装函数。

【讨论】:

    【解决方案2】:

    使用分治法查找峰值元素会使用递归函数的包装器。

    我发现理解包装函数非常有用。

    https://www.geeksforgeeks.org/find-a-peak-in-a-given-array/

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2013-02-23
      • 2011-05-23
      • 1970-01-01
      • 2019-08-02
      • 1970-01-01
      • 1970-01-01
      • 2022-01-24
      • 1970-01-01
      相关资源
      最近更新 更多