【算法】设计并实现计算数列第n项的递归算法,通过打印输出整个数列以验证算法的正确性(C++源码)
一、设计
设计并实现计算数列第n项的递归算法,通过打印输出整个数列以验证算法的正确性
整数数列的首项a1=1,后续奇数项和偶数项的计算公式分别为:
a2n=a2n-1 + 2
a2n+1 = a2n-1+ a2n -1
二、设计思路
① 首先设置while循环碰到〇时弹出,可设置成while(1);
② 定义f(x)函数,运用递归,第一项为1,之后偶数项为前一项奇数项加2,奇数项为后两项之和减1;
③ 判断x是否为1,若为1,则返回1,若不为1则进行递归函数。
三、源代码(C++)
#include<iostream>
using namespace std;
int f(int x);
int main()
{
while(1)
{
cout<<"Please enter a sequence size:";
int n;
cin>>n;
if(n == 0)
break;
for(int i = 1; i <= n; i++)
cout<<f(i)<<" ";
cout << endl;
}
return 0;
}
int f(int x)
{
if(x==1) return 1;
if(x%2 == 1)
return f(x-1)+f(x-2)-1;
else
return f(x-1) + 2;
}