目录
注意:在求和时,如果不将sum每次求和的初始值置为1,那么求和就会重复。
第一题
求n!
方法一:循环迭代法
int main() {
int n = 0;
int sum = 1;
scanf("%d", &n);
for (int i = 1; i <= n; i++) {
sum = sum * i;
//sum *=i;
}
printf("%d\n",sum);
return 0;
}
方法二:递归法
注意0!,0的阶乘也为1
//n!递归写法
int fib(int n) {
if (n <= 1) { //0!=1
return 1;
}
else {
return n * fib(n - 1);
}
}
int main() {
int n = 0;
scanf("%d", &n);
int sum = fib(n);
printf("%d\n", sum);
return 0;
}
第二题
第二题1!+2!+...+n!
方法一:要循环两次,一次求阶乘,一次求和。
注意:在求和时,如果不将sum每次求和的初始值置为1,那么求和就会重复。
正常求和,1+1*2+1*2*3......
每一重置sum:1+1+1*2+1+1*2+1*2*3+1+1*2+1*2*3+1*2*3*4
方法二:
//第二题1!+2!+...+n!
int main() {
int n = 0;
scanf("%d", &n);
int sum = 1;
int cum = 0;
for(int i = 1;i<=n;i++) //要循环两次
{
sum = 1; //让sum每次置为1
for (int j = 1; j <= i; j++)
{
sum = sum * j;
}
cum = cum + sum;
}
/*for (int i = 1; i <= n; i++) {
sum *= i;
cum += sum;
}*/
printf("%d", cum);
return 0;
}
第三题
在有序数组1,2,3,4,5,6,7,8,9,10里查找元素
printf("%d\n", sizeof(arr)); //求数组的大小
printf("%d\n", sizeof(arr[0])); //求数组一个元素的大小
printf("%d\n", sizeof(arr) / sizeof(arr[0]) //求数组的元素个数