将递归函数转换为迭代函数
Convert recursive function to iterative
我有这个递归定义的函数:
功能
我已经在C++中实现了它:
int f_recursive(int n) {
if (n <= 2) {
return 1;
}
else {
return ( n * f_recursive(n - 1) - f_recursive(n - 2) );
}
如何迭代计算相同的函数?
为了好玩,我的第一次尝试。任何人都可以改进吗?
#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
相关文章:
- 实现一个在集合上迭代的模板函数
- 如何在C++中将迭代器作为函数参数传递
- 如何在 c++ 中将字符串迭代器变量传递给函数?
- 为什么我的模板化函数需要从一个迭代器转换到另一个迭代器?
- 调用迭代函数的次数
- HPX 是否提供具有粒度控制的基于任务的并行化迭代函数?
- 如何将递归函数(具有两个基本情况)转换为迭代函数
- 将递归函数转换为迭代函数
- 当我计算它并给我 O(n^3) 时,这个迭代函数是如何是 O(n/2) 的
- C 的自定义迭代函数
- 如何记录C 重复迭代函数的总时间
- 使用迭代函数调用初始化std::vector
- 将递归可变参数模板函数转换为迭代函数
- 将迭代函数转换为递归函数
- 将迭代函数转换为递归函数
- c++使用迭代函数进行编译
- 模板类中向量向量的迭代函数构建
- 将迭代函数转换为递归函数
- 这个递归函数是如何自动转换成迭代函数的
- 在编译时迭代函数参数类型