1、在屏幕上输出如下图形 键盘输入n,比如输入3如下
** ** * *
2、一球从100米高度自由落下,每次落地后反跳回原高度的一半;再落下,求它在第10次落地时,共经过多少米?第10次反弹多高?
/* * @param hight 100米起始高度 * @param n 跳跃的次数 * @param sum 当前跳跃次数 * @param sumHight 当前经过总高度 */
void persent50(double hight, int n, int sum, double sumHight)
{if (n == 1)//次数为1时特殊处理{printf("%.5f\n", hight);printf("%.5f\n", sumHight + (hight + (hight / 2.0)));}else{if (sum <= n)//当前递归次数sum小于n,继续递归{double temp = sumHight + (hight + (hight / 2.0));persent50(hight / 2.0, n, ++sum, temp);}else{printf("%.5f\n", hight);printf("%.5f\n", sumHight);}}
}
3、有一分数序列:2/1,3/2,5/3,8/5,13/8,21/13…求出这个数列的前20项之和。
/* * @param a 分子 * @param b 分母 * @param n 总项数 * @param x 当前递归次数 * @param sum 总和 */
void test3(double a, double b, int n, int x, double sum)
{if (n == 1){printf("0.5");}else{if (x < n){double ab = a / b;double temp = sum + ab;test3(a + b, a, n, ++x, temp);}else{printf("%.5f\n", sum+a/b);}}
}
4、求1+2!+3!+…+10!的和。
/* * @param n 阶乘到几结束,比如本题要求,就输入10。 * @param sum 当前和 * @param x 当前递归次数 */
void test4(int n,int sum, int x){int temp=1;for (int i = 1; i <= x; i++){temp *= i;}if (x<=n){test4(n,sum+temp,++x);}else{printf("%d\n",sum-1);}
}
5、求100 ~ 200 之间所有的素数。
void test5()
{for (int i = 100; i < 201; i++){if (i%2==0 || i%3==0 || i%5==0 ||i%7==0 || i%11==0||i%13==0){continue;}else{printf("%d\n",i);}}
}
6、输出星号组成的菱形。
void test6()
{for (int i = 1; i < 6; i++){for (int j = 1; j < 6; j++){if (i <= 3){if (j >= (3 - i + 1) && j <= (3 + i - 1)){printf("*");}else{printf(" ");}}else{if (j > i-3){ printf("*");if (j==4){break;}if (i==5 && j==3){break;}}else{printf(" ");}}}printf("\n");}
}
7、我们把只包含因子2、3和5的数称作丑数(Ugly Number)。例如6、8都是丑数,但14不是,因为它包含因子7。习惯上我们把1当做是第一个丑数。求按从小到大的顺序的第150个丑数。(如果找第1500个)