首页 > 代码库 > 蓝桥杯-切面条

蓝桥杯-切面条

烟大OJ-2506

 

Description

    一根高筋拉面,中间切一刀,可以得到2根面条。
    如果先对折1次,中间切一刀,可以得到3根面条。
    如果连续对折2次,中间切一刀,可以得到5根面条。
    那么,连续对折10次,中间切一刀,会得到多少面条呢?

Input

包含多组数据,首先输入T,表示有T组数据.每个数据一行,是对折的次数。

Output

每行一组数据,输出得到的面条数。

Sample Input

3012

Sample Output

235
code
循环
 1 #include <iostream> 2 using namespace std; 3 int main() 4 { 5     int i,j,t,n,two=1,sum=2; 6     cin>>t; 7     for(i=1;i<=t;i++) 8     { 9         cin>>n;10         sum=2,two=1;11         for(j=0;j<n;j++)12         {13             sum+=two;14             two*=2;15         }16         cout<<sum<<endl;17     }18     return 0;19 }

递归

#include <iostream>using namespace std;int noodle(int n);int main(){    int i;    int n,m;    cin>>n;    for(i=1;i<=n;i++)    {        cin>>m;        cout<<noodle(m)<<endl;    }    return 0;}int noodle(int n){    int i,two=1;    if(n==0)        return 2;    else    {        for(i=1;i<n;i++)            two*=2;        return noodle(n-1)+two;    }}    

递归2

 1 #include <iostream> 2 using namespace std; 3 int f(int n)  4 {     5     //基本递归      6     if(n == 0)  7     {         8         return 2;     9     } 10     else 11     {        12         return 2 * f(n - 1) - 1;    13     }14 }15 int main(void) 16 {    17     cout << f(10) << endl;    18     return 0;19 }

递归3

#include <iostream>using namespace std;int f2(int n, int r) {    //尾递归        if(n == 0)     {                return r;        }     else     {                return f2(n - 1, 2 * r - 1);        }}int main(void) {        cout << f2(10, 2) << endl;        return 0;}

 

 

1.递归重要的是总结出递归公式!

2.不要在递归函数中定义变量,真的很蹩脚。

蓝桥杯-切面条