遞歸求解
例7.1 N階樓梯上樓問題
代碼7.1
#include<iostream>
using namespace std;
int F(int x){
int ret;
if(x == 1)
ret = 1;
else if(x == 2)
ret = 2;
else
ret = F(x-1) + F(x-2);
return ret;
}
int main(){
int x;
while(cin >> x)
cout << F(x) << endl;
return 0;
}
例7.2 不容易系列之一
代碼7.2
#include<iostream>
using namespace std;
long long A[25] = {0};
long long F[25] = {0};
void init(){
A[2] = 1;F[2] = 1;
for(int i=3;i<25;i++){
F[i] = (i-1)*A[i-1];
A[i] = F[i-1] + (i-1)*A[i-1];
}
}
int main(){
init();
int n;
while(cin >> n){
cout << F[n] << endl;
}
return 0;
}
喫糖果
代碼同例題7.1。