#include<stdio.h>
//求连续自然数之和
/*
int Sum(int x, int y)
{
if(x == y)
{
return x ;
}
return x + Sum(x + 1, y);
}
int main()
{
int b = 0;
b = Sum(1, 10);
printf("%d \n",b);
return 0;
}*/
/*
//求x0 ~ xn (x0 < xn)的阶乘
int factor(int x0, int xn)
{
if(x0 >= xn)
{
return x0;
}
return x0 * factor(x0 + 1, xn);
}
int main()
{
int b = 0;
b = factor(1, 6);
printf("%d \n",b);
return 0;
}*/
///
// 字符 的全排列
/*
void swap(char* a, char* b, char c)
{
c = *a;
*a = *b;
*b = c;
}
void Permutation(char *list, int i, int n)
{
int j, temp;
if(i == n)
{
for(j = 0; j<= n; j++)
{
printf("%c", list[j]);
}
printf("\n");
}
else
{
for(j = i; j <= n; j++)
{
swap(&list[i], &list[j],temp) ;
Permutation(list, i+1, n) ;
swap(&list[i], &list[j], temp);
}
}
}
int main()
{
char list[7] = {'a', 'b', 'c', 'd', 'e', 'f', 'g'};
Permutation(list, 0, 2);
return 0;
}*/
//猴子吃桃
/**************************************
小猴子第一天摘下若干桃子,
当即吃掉一半,又多吃一个.
第二天早上又将剩下的桃子吃一半,又多吃一个.
以后每天早上吃前一天剩下的一半另一个.
到第10天早上猴子想再吃时发现,只剩下一个桃子了.
问第一天猴子共摘多少个桃子?
****************************************/
/*
int fruit(int begin, int times)
{
if(times == 10)
{
return begin;
}
printf("b = %d\n",begin);
return fruit((begin + 1) * 2, times +1);
}
int main()
{
int b = 0;
b = fruit(1, 2);
printf("b = %d\n",b);
return 0;
} */
//求两个数的最大公约数与最小公倍数
/*
int fgongyue(int m, int n)
{
if(n == 0)
{
return m;
}
return fgongyue(n, m % n);
}
int main()
{
int a = 27, b = 24;
int result = fgongyue(a, b);
int result1 = a * b / result;
printf("最大公约数: %d\n",result);
printf("最小公倍数: %d\n",result1);
return 0;
}*/
//角谷定理
/************************************
角谷定理。输入一个自然数,若为偶数,则把它除以2,
若为奇数,则把它乘以3加1。经过如此有限次运算后,
总可以得到自然数值1。求经过多少次可得到自然数1。
如:输入22,
输出 22 11 34 17 52 26 13 40
20 10 5 16 8 4 2 1
step = 16;
*************************************/
/*
int i = 0;
int jiaogu(int n)
{
if(n == 1)
{
printf("%d",n);
i++;
return i;
}
else if(n %2 == 0)
{
i++;
printf("%d ",n);
return jiaogu(n/2);
}
else
{
i++;
printf("%d ",n);
return jiaogu(n * 3 + 1);
}
}
int main()
{
int number;
int count = 0;
printf("请输入一个数: \n");
scanf("%d",&number);
count = jiaogu(number);
printf("需要 %d 次运算\n",i);
return 0;
}*/
///
//十进制转二进制
/*
int change(int num)
{
if(num == 1)
{
printf("%d", num);
return 0;
}
change(num / 2); //12, 6, 3, 1
printf("%d",num % 2); // 0, 0, 1, 1
return 1;
}
int main()
{
int number;
printf("输入一个十进制数: \n");
scanf("%d", &number);
printf("二进制输出: \n");
change(number);
printf("\n");
return 0;
}*/
///
//计算题
/********************************************
计算M=max(a,b,c)/[max(a+b,b,c)*max(a,b,b+c)],
其中a,b,c由键盘输入
********************************************/
//总感觉不对劲 求高手!!!!!!!!!
/*
double Max(double x, double y, double z)
{
return (x > y? x : y) > z? (x > y? x : y) : z;
// return Max(x, y, z) / (Max(x + y, y, z) * Max(x , y, y + z));
}
double result(double xx, double yy, double zz)
{
double m1 = Max(xx, yy, zz);
double m2 = Max(xx + yy, yy, zz);
double m3 = Max(xx, yy, yy + zz);
return m1 / (m2 *m3);
}
int main()
{
double a, b, c;
printf("请输入三个数:\n");
scanf("%lf %lf %lf", &a, &b, &c);
printf("%f\n",result(a, b, c));
return 0;
}*/
//走楼梯
/*************************************
梯有N阶,上楼可以一步上一阶,也可以一次上二阶。
编一个程序,计算共有多少种不同的走法。
return 1+(fc(n-1)+fc(n-2)
**************************************/
/*
int ladder(int n)
{
if(n == 1)
{
//printf("%d ",n);
return n;
}
else if(n == 2)
{
// printf("%d ",n);
return 2;
}
return ladder(n - 1) + ladder(n - 2); // n=4 ladder(3) +ladder(2) = ? + 2
// ladder(3) =ladder(2)+ladder(1) = 3
}
int main()
{
int num = ladder(5);
printf("%d\n",num);
return 0;
}*/
//求连续自然数之和
/*
int Sum(int x, int y)
{
if(x == y)
{
return x ;
}
return x + Sum(x + 1, y);
}
int main()
{
int b = 0;
b = Sum(1, 10);
printf("%d \n",b);
return 0;
}*/
/*
//求x0 ~ xn (x0 < xn)的阶乘
int factor(int x0, int xn)
{
if(x0 >= xn)
{
return x0;
}
return x0 * factor(x0 + 1, xn);
}
int main()
{
int b = 0;
b = factor(1, 6);
printf("%d \n",b);
return 0;
}*/
///
// 字符 的全排列
/*
void swap(char* a, char* b, char c)
{
c = *a;
*a = *b;
*b = c;
}
void Permutation(char *list, int i, int n)
{
int j, temp;
if(i == n)
{
for(j = 0; j<= n; j++)
{
printf("%c", list[j]);
}
printf("\n");
}
else
{
for(j = i; j <= n; j++)
{
swap(&list[i], &list[j],temp) ;
Permutation(list, i+1, n) ;
swap(&list[i], &list[j], temp);
}
}
}
int main()
{
char list[7] = {'a', 'b', 'c', 'd', 'e', 'f', 'g'};
Permutation(list, 0, 2);
return 0;
}*/
//猴子吃桃
/**************************************
小猴子第一天摘下若干桃子,
当即吃掉一半,又多吃一个.
第二天早上又将剩下的桃子吃一半,又多吃一个.
以后每天早上吃前一天剩下的一半另一个.
到第10天早上猴子想再吃时发现,只剩下一个桃子了.
问第一天猴子共摘多少个桃子?
****************************************/
/*
int fruit(int begin, int times)
{
if(times == 10)
{
return begin;
}
printf("b = %d\n",begin);
return fruit((begin + 1) * 2, times +1);
}
int main()
{
int b = 0;
b = fruit(1, 2);
printf("b = %d\n",b);
return 0;
} */
//求两个数的最大公约数与最小公倍数
/*
int fgongyue(int m, int n)
{
if(n == 0)
{
return m;
}
return fgongyue(n, m % n);
}
int main()
{
int a = 27, b = 24;
int result = fgongyue(a, b);
int result1 = a * b / result;
printf("最大公约数: %d\n",result);
printf("最小公倍数: %d\n",result1);
return 0;
}*/
//角谷定理
/************************************
角谷定理。输入一个自然数,若为偶数,则把它除以2,
若为奇数,则把它乘以3加1。经过如此有限次运算后,
总可以得到自然数值1。求经过多少次可得到自然数1。
如:输入22,
输出 22 11 34 17 52 26 13 40
20 10 5 16 8 4 2 1
step = 16;
*************************************/
/*
int i = 0;
int jiaogu(int n)
{
if(n == 1)
{
printf("%d",n);
i++;
return i;
}
else if(n %2 == 0)
{
i++;
printf("%d ",n);
return jiaogu(n/2);
}
else
{
i++;
printf("%d ",n);
return jiaogu(n * 3 + 1);
}
}
int main()
{
int number;
int count = 0;
printf("请输入一个数: \n");
scanf("%d",&number);
count = jiaogu(number);
printf("需要 %d 次运算\n",i);
return 0;
}*/
///
//十进制转二进制
/*
int change(int num)
{
if(num == 1)
{
printf("%d", num);
return 0;
}
change(num / 2); //12, 6, 3, 1
printf("%d",num % 2); // 0, 0, 1, 1
return 1;
}
int main()
{
int number;
printf("输入一个十进制数: \n");
scanf("%d", &number);
printf("二进制输出: \n");
change(number);
printf("\n");
return 0;
}*/
///
//计算题
/********************************************
计算M=max(a,b,c)/[max(a+b,b,c)*max(a,b,b+c)],
其中a,b,c由键盘输入
********************************************/
//总感觉不对劲 求高手!!!!!!!!!
/*
double Max(double x, double y, double z)
{
return (x > y? x : y) > z? (x > y? x : y) : z;
// return Max(x, y, z) / (Max(x + y, y, z) * Max(x , y, y + z));
}
double result(double xx, double yy, double zz)
{
double m1 = Max(xx, yy, zz);
double m2 = Max(xx + yy, yy, zz);
double m3 = Max(xx, yy, yy + zz);
return m1 / (m2 *m3);
}
int main()
{
double a, b, c;
printf("请输入三个数:\n");
scanf("%lf %lf %lf", &a, &b, &c);
printf("%f\n",result(a, b, c));
return 0;
}*/
//走楼梯
/*************************************
梯有N阶,上楼可以一步上一阶,也可以一次上二阶。
编一个程序,计算共有多少种不同的走法。
return 1+(fc(n-1)+fc(n-2)
**************************************/
/*
int ladder(int n)
{
if(n == 1)
{
//printf("%d ",n);
return n;
}
else if(n == 2)
{
// printf("%d ",n);
return 2;
}
return ladder(n - 1) + ladder(n - 2); // n=4 ladder(3) +ladder(2) = ? + 2
// ladder(3) =ladder(2)+ladder(1) = 3
}
int main()
{
int num = ladder(5);
printf("%d\n",num);
return 0;
}*/