我有这个递归定义函数:
我已经用C ++实现了它:
int f_recursive(int n) {
if (n <= 2) {
return 1;
}
else {
return ( n * f_recursive(n - 1) - f_recursive(n - 2) );
}
如何迭代计算相同的函数?
答案 0 :(得分:0)
为了好玩,我的第一次尝试。任何人都可以改进吗?
#include <iostream>
#include <iomanip>
int f_recursive(int n)
{
if (n <= 2) {
return 1;
}
else {
return (n * f_recursive(n - 1) - f_recursive(n - 2));
}
}
int f_iterative(int n)
{
int result = 1, result_1 = 1;
for (int i = 3 ; i <= n ; ++i) {
int result_2 = result_1;
result_1 = result;
result = i * result_1 - result_2;
}
return result;
}
int main()
{
for(int i = 0 ; i < 14 ; ++i) {
std::cout << std::setw(10) << f_recursive(i) << " " << f_iterative(i) << std::endl;
}
}
示例输出:
1 1
1 1
1 1
2 2
7 7
33 33
191 191
1304 1304
10241 10241
90865 90865
898409 898409
9791634 9791634
116601199 116601199
1506023953 1506023953