烟大OJ-2506
Description
一根高筋拉面,中间切一刀,可以得到2根面条。
如果先对折1次,中间切一刀,可以得到3根面条。
如果连续对折2次,中间切一刀,可以得到5根面条。
那么,连续对折10次,中间切一刀,会得到多少面条呢?
Input
包含多组数据,首先输入T,表示有T组数据.每个数据一行,是对折的次数。
Output
每行一组数据,输出得到的面条数。
Sample Input
3 0 1 2
Sample Output
2 3 5 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.不要在递归函数中定义变量,真的很蹩脚。
时间: 2024-08-05 06:36:43