四、枚举,递推、迭代法初步学习

来源:互联网 发布:jdbc连接数据库 编辑:程序博客网 时间:2024/06/06 03:17

例题:

计算s=a+aa+aaa+aaaa+..+aaaaaaaaaa(99位都是a)

分析一下,把各个项拆一下

s=b1+b2+b3+b4+...+b99

b1=a

b2=10*b1+a

b3=10*b2+a

...

b99=b98*10+a

所以我们可以用迭代的方式做

#include <iostream>using namespace std;int bn(int a,int n);int main(){  int a,res;  cin>>a;  //下面是与循环,就算个3的看看吧  res=0;    for(int i=1;i<4;i++){        res+=bn(a,i);//res=bn(a,1)+bn(a,2)+bn(a,3)    }    cout<<res<<endl;    return 0;}int bn(int a,int n){int b;if(n==1)return a;else{b=bn(a,n-1)*10+a;return b;}}

这个方法看起来太蠢了吧,首先是时间的问题,其次是只用int存不了太大的数,但是放下这里做个例子用。