递归计算并打印Hailstone序列
因为Hailstone序列比较简单,所以作为入门的递归程序对递归思想的理解更好。话不多说,原理及代码如下:
简介:
- HailStone序列
- n=1时,返回1;
- n>1时且为偶数时,{n} ∪ {n/2}
- n>1时且为奇数时,{n} ∪ {3n + 1}
#include <iostream>
//计算并打印Hailstone序列
void Hailstone(int n)
{
if ( n <= 1 ) {
std::cout << 1 << "\n";
return ;
}
if ( 0 == n%2 )
{
std::cout << n << "," ;
Hailstone(n/2);
}
else
{
std::cout << n << "," ;
Hailstone(3*n + 1);
}
}
//计算长度
int Len_H(int n)
{
int lenght = 1; //从1开始
while ( 1 < n)
{
(n % 2) ? n = 3 * n + 1 : n /= 2 ;
lenght++;
}
return lenght;
}
int main(void)
{
Hailstone(7);
return 0;
}
测试输出: