问题描述
已知递推数列:a(1)=1,a(2i)=a(i)+1,a(2i+1)=a(i)+a(i+1),(i为正整数),试求该数列的第n项与前n项中哪些项最大?最大值为多少?。算法分析
该数列分项序号为奇或偶两种情况作不同递推,所得数列呈大小有规律的摆动.
设置a数组,赋初值a(1)=1.根据递推式,在循环中分项序号i(2─n)为奇或偶作不同递推:
mod(i,2)=0(即i为偶数),a(i)=a(i/2)+1.
mod(i,2)=1(即i为奇数),a(i)=a((i+1)/2)+a((i-1)/2)
每得一项a(i),与最大值max作比较,如果a(i)>max,则max=a(i).
最后,在所有项中搜索最大项(因最大项可能多于一项),并打印最大值max.- 程序代码
#include <iostream>
using namespace std;
int main()
{
int n;
cin >> n;