【发布时间】:2019-05-07 08:08:45
【问题描述】:
对于用户输入的2个数字x和n,我的代码需要找到由以下公式递归定义的Hn(x):
我正在尝试实现该函数的递归版本和迭代版本。但我认为我的概念是错误的,因为我的代码由于 H(n) 和 H[n] 上的错误而无法编译:
#include "pch.h"
#include <iostream>
int H(int n, int x) //function for recursion
{
if (n < 0) return -1;
else if (n == 0) return 1;
else if (n == 1) return 2 * x;
return 2 * x * H(n) * x - 2 * n * H(n - 1) * x;
}
int H1(int n, int x) //function for Iterator
{
int *H1 = new int[n + 1];
H[0] * x = 1;
H[1] * x = 2 * x;
for (int i = 0; i <= n; i++)
{
H[i] * x = 2 * x * H[n] * x - 2 * n * H[n - 1] * x;
}
return H1(n) * x;
}
int main()
{
int n, x;
std::cout << "Enter the number n: ";
std::cin >> n;
std::cout << "Enter the number x: ";
std::cin >> x;
std::cout << "Rec = " << H[n] * x std::endl;
std::cout << "Iter = " << H1[n] * x std::endl;
}
这令人困惑,我对此表示歉意,因为我对函数完全陌生。
我已经设法用斐波那契数列做到了。那里我只为函数f(x) 使用了一个参数,即f(int n){... },但在这里我对函数H(int n, int x) 中的两个参数有点困惑,其中n 是H 的索引,而x 是一个整数。
【问题讨论】:
-
这个
H(n)不是你调用带有两个参数的函数的方式,这个H1[n]也不是你调用函数的方式。首先为变量和函数指定不同的名称,您的代码非常混乱 -
int *H1 = new int[n + 1];-- 1) 内存泄漏。 2)混淆命名变量与函数名相同。 -
@user463035818,是的,这令人困惑,我对此表示歉意,因为我对函数完全陌生。
-
罗马不是一天建成的。从一个在屏幕上打印其参数的函数开始,或者像这样简单
标签: c++ function recursion iteration