c++新手问题...大虾赐教在线等

来源:百度知道 编辑:UC知道 时间:2024/05/13 03:24:35
第一天拿一块钱 二三天两天各拿两块钱 四五六三天各拿三块钱 七八九十四年各拿四块钱 输入天数 输出总金币数....请问如何实现...谢谢...

重在启发思路,这样一个题目,如果你可以考虑使用归纳的方法就可以省略许多麻烦,将这些麻烦交给机器来做.比如你要算第n天的金额,那么如果你已经知道了第n-1天的金额,那么第n天的金额自然就是第n-1天的金额加上第n天的金额,而第n天的金额是容易求解的,这样这个问题就可以解决了,可以用循环的形式,也可以直接使用递归,算法如下:

#include <iostream>
using namespace std;

int getround(int day)//这个函数可以计算在这天可以拿多少钱
{
int n=1;
while(true)
{
if((0.5*(1+n)*n)>=day)
{
return n;
break;
}
else
{
n++;
}
}
}
int getsum(int day)//这个函数是核心函数,利用简单的递归思想来计算。
{
int sum;//先设定总的数目
if(day>=1)//当数目是比1大的时候:
{
sum=getsum(day-1);//首先计算出当天的金额
sum+=getround(day);//显然总今额是昨天的总金额加上今天的今额,注意,因为是可以递归实现,所以我们假设已经知道了以前的总金额
return sum;//然后将这个金额返回
}
else//如果已经不是大与1的时候则返回0
{
return 0;
}
}
int main()
{
int day;
while(true)
{
cin>>day;
cout<<getsum(day)<<endl;
}
}

int jinbi=0 ,n=0