跟踪递归函数时出现问题
Trouble tracking recursive function
我有这样的代码,它输出:10 5 16 8 4 2 11然而,我不知道11是从哪里来的,因为当追踪时,我得到了以下信息:
H(10)
H(5)
1+H(16) //does this result in 17?
H(8)
H(4)
H(2)
H(1) -> returns 0
此外,1+H(16(中的(1(会发生什么?因此,我的n个值的输出不应该是:10 5 17 8 4 2 1
#include <iostream>
using namespace std;
int H ( int n ) {
cout << " " << n<<" ";
if ( n == 1 ) return 0;
if ( n%2 != 0 ) return 1 + H ( 3*n + 1 );
else return H ( n/2 );
}
int main() {
// for ( int i=0; ++i<=20; )
// cout << H(i) << endl;
cout << H(10) << endl;
}
在递归结束时,函数打印1
,然后堆栈弹出所有内容,main
打印返回值1
(递归结束时返回0,只有对H(5(的调用将结果加1(,因此打印11
。
相关文章:
- 递归函数计算序列中的平方和(并输出过程)
- 如何在Elixir中调用递归函数并行
- 到连接组件算法的问题(递归)
- 递归函数有效,但无法记忆
- 为什么我的递归函数按降序打印,然后按升序打印?
- 为什么递归函数的最终输出是 5?
- 有没有办法使用递归函数找到数组中最小值的 INDEX?C++
- 返回不停止函数,递归函数问题?(编程练习,动态规划,Levenshtein 回溯)
- 跟踪递归函数时出现问题
- 这个简单的 C++ 递归函数来反转字符串有什么问题?
- 问题 - 递归函数以返回文本文件排列
- 递归函数中的许多参数会导致性能问题吗
- 实现用于查找路径的递归函数时出现问题
- 将数组传递给递归函数 c++ 时遇到问题
- 在运行递归函数时将新元素插入向量时出现问题
- Fencepost问题:我需要一个递归函数,当它第一次被调用时,它会跳过执行一个部分
- 带有for循环的递归函数:返回值问题
- 分划问题的递归函数
- c++递归函数的问题
- 选举投票递归函数-斯坦福CS106B问题