#include using namespace std; //递归版本 int ans; void play_recursion(int n) { ans += n; if (n == 1 || n == 2) return; play_recursion(n - 1); play_recursion(n - 2); } //利用栈的版本 int play_stack(int n) { //特判 if (n == 1 || n == 2) return n; //栈 stack s; //初始化 s.push(1); s.push(2); int sum; for (int i = 3; i <= n; i++) { int y = s.top(); s.pop(); int x = s.top(); s.pop(); sum = y + x + i; s.push(y); s.push(sum); } return s.top(); } int main() { //递归版本 for (int i = 1; i <= 10; i++) { ans = 0; play_recursion(i); cout << ans << " "; } cout << endl; //栈+循环版本 for (int i = 1; i <= 10; i++) cout << play_stack(i) << " "; return 0; }