主要是为了熟悉一下迭代法。程序本身不难。
使用迭代法函数是记得传入的应该是引用或者指针,否则回来就没了。
/* 求分数之和 */ #include <stdio.h> int gcd(long s1,long s2) { // 辗转相除法求最大公约数 int m = 0,n = 0,r = -1; m = (int)s2; n = (int)s1; while (r) { r = m % n; m = n; n = r; } return m; } void sumFib(int n, long& s1, long& s2) { // 求分数数组之和,采用化为同分母的形式 long a=1,b=2; int n_gcd = 1; while (a <= n) { s2 = s2*a + s1*b; s1 *= a; ++a,++b; n_gcd = gcd(s1,s2); s1 /= n_gcd; s2 /= n_gcd; } } main() { long s1 =1 ,s2 = 0; long &ps1=s1,&ps2=s2; int n; scanf("%d",&n); sumFib(n,ps1,ps2); printf("%d/%d",s2,s1); }
/* 小母牛的繁殖问题 */ #include <stdio.h> int Cow(int n) { if (n == 1) return 2; else if(n == 2) return 3; else if(n == 3) return 4; int cow1 = 2,cow2 = 3,cow3 = 4,cow = 0; int i = 4; for (;i <= n ; ++i) { cow = cow1 + cow3; cow1 = cow2; cow2 = cow3; cow3 = cow; } return cow; } main() { int n; scanf("%d",&n); n = Cow(n); printf("%d/n",n); }
