-
n的阶乘
-
输出一个多位数字的每一位
-
求字符串的长度
-
求斐波那契数列第n项
-
汉诺塔
-
青蛙跳台阶
-
冒泡排序
-
n的阶乘
int factorial(int n) {//递归
if (n == 0)
return 1;
else
return (n * factorial(n - 1));
}
int factorial2(int n) {//非递归
int nu = 1;
while (n > 0) {
nu = nu * n--;
}
return nu;
}
int main() {
//n的阶乘
int n = 5;
printf("%d \n", factorial(n));
printf("%d \n", factorial2(n));
return 0;
}
-
输出一个多位数字的每一位
void print_num(int n) {//递归
printf("%d\n", n % 10);
if (n > 9) {
print_num(n / 10);
}
}
void print_num2(int n) {//循环
while (n > 0) {
printf("%d\n", n % 10);
n = n / 10;
}
}
int main() {
//输出一个多位数字的每一位
int n = 23445;
print_num2(n);
return 0;
}
-
求字符串的长度
int sum = 0;
void my_strlen(char* arr) {
if (*arr != '\0') {
sum++;
my_strlen(arr + 1);
}
}
int main() {//求字符串的长度
char arr[] = "hello";
my_strlen(arr);
printf("%d", sum);
return 0;
}
-
求斐波那契数列第n项
int fb(int n) {
int fn;
if (n > 0) {
if (n == 1 || n == 2)
return 1;
else
{
fn = fb(n - 1) + fb(n - 2);
return fn;
}
}
else
return -1;
}
int main() {//求斐波那契数列第n项
int n = 0;
printf("%d\n", fb(n));
return 0;
}
-
汉诺塔
void hanoi(int n, char A, char B, char C) {
if (n == 1) {
printf("%c -> %c\n", A, C);
}
else
{
hanoi(n - 1, A, C, B);
printf("%c -> %c\n", A, C);
hanoi(n - 1, B, A, C);
}
}
int main() {//汉诺塔
int n = 3;
char A = 'A';
char B = 'B';
char C = 'C';
hanoi(n, A, B , C);
return 0;
}
-
青蛙跳台阶
int sum = 0;
void frog(int n, int N) {
if (n < N) {
frog(n + 1, N);
frog(n + 2, N);
}
if (n == N) {
sum++;
}
}
int main() {
//青蛙跳台阶:青蛙一次可以跳1个台阶,也可以一次跳n的台阶
int n = 0;
int N = 3;
frog(n, N);
printf("%d\n", sum);
return 0;
}
-
冒泡排序
void pupple(int* arr, int sz) {
for (int i = 0; i < sz; i++) {
for (int j = 0; j < sz - i - 1; j++) {
if (arr[j] > arr[j + 1]) {
int tmp = arr[j];
arr[j] = arr[j + 1];
arr[j + 1] = tmp;
}
}
}
}
int main() {
//冒泡排序
int arr[] = {2, 34, 4, 5, 7, 90, 567, 4, 34};
int sz = sizeof(arr) / sizeof(arr[0]);
for (int i = 0; i < sz; i++) {
printf("%d ", arr[i]);
}
printf("\n");
pupple(arr, sz);
for (int i = 0; i < sz; i++) {
printf("%d ", arr[i]);
}
return 0;
}