-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathrecursion
57 lines (51 loc) · 1.5 KB
/
recursion
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
//有一头母牛,它每年年初生一头小母牛。每头小母牛从第四个年头开始,每年年初也生一头小母牛。请编程实现在第 n 年的时候,共有多少头母牛(实则是列出来几组数据找规律,然后用迭代的方法列出规律)
//迭代法
//The program language is "C++".
//question level: medium
#include<iostream>
using namespace std;
int main()
{
int n, i;
int f1, f2, f3, fn;
while (cin >> n && n != 0) //输入 n 的值,且 n 不等于0,则进入,否则退出
{
f1 = 1;
f2 = 2;
f3 = 3;
if (n == 1)
cout << f1 << endl;
else if (n == 2)
cout << f2 << endl;
else if (n == 3)
cout << f3 << endl;
else
{
for (i = 4; i <= n; i++)
{
fn = f3 + f1;
//把该年迭代为一年前,一年前迭代为两年前,依次类推
f1 = f2; //f1代表 3 年前
f2 = f3; //f2代表 2 年前
f3 = fn; //f3代表 1 年前
}
cout << fn << endl; //fn
}
}
return 0;
}
//数组
#include<iostream>
using namespace std;
int main()
{
int n, i;
int f[55] = { 0,1,2,3 }; //f[0]=0,f[1]=1,f[2]=2,f[3]=3
for (i = 4; i < 55; i++)
f[i] = f[i - 1] + f[i - 3];
while (cin >> n && n != 0) //输入 n 的值,且 n 不等于0,则进入,否则退出
{
cout << f[n] << endl;
}
return 0;
}