1.
作业标题(682)
递归实现n的k次方
作业内容
编写一个函数实现n的k次方,使用递归实现。
参考代码为:
//编写一个函数实现n的k次方,使用递归实现 #include <stdio.h> int hanshu(int n, int k) { int i = 0; if (k <= 0) return 1; if (k >= 1) return n * hanshu(n,k - 1); } int main() { int n = 0; int k = 0; scanf_s("%d %d", &n, &k); printf("%d\n", hanshu(n,k)); return 0; }
运行的结果为:
2.
作业标题(683)
计算一个数的每位之和(递归实现)
作业内容
写一个递归函数DigitSum(n),输入一个非负整数,返回组成它的数字之和
例如,调用DigitSum(1729),则应该返回1+7+2+9,它的和是19
输入:1729,输出:19
参考代码为:
//写一个递归函数DigitSum(n),输入一个非负整数,返回组成它的数字之和. //例如,调用DigitSum(1729),则应该返回1+7+2+9,它的和是19 #include <stdio.h> int DigitSum(int n) { int sum = 0; int m = 0; if (n != 0) { m = n % 10; n = n / 10; sum = m + DigitSum(n); } return sum; } int main() { int a; printf("请输入一个整数: "); scanf_s("%d", &a); printf("各位数之和为:%d\n", DigitSum(a)); return 0; }
代码的运行结果为:
3.
作业标题(684)
字符串逆序(递归实现)
作业内容
编写一个函数 reverse_string(char * string)(递归实现)
实现:将参数字符串中的字符反向排列,不是逆序打印。
要求:不能使用C函数库中的字符串操作函数。
比如:
char arr[] = "abcdef";
逆序之后数组的内容变成:fedcba
参考代码为:
#include<stdio.h> void reverse_string(char* string) { if (*string != '\0') { string++; reverse_string(string); printf("%c", *(string - 1)); } } int main() { char string[] = "abcdef"; reverse_string(string); printf("\n"); return 0; }
代码的运行结果为:
4.
作业标题(685)
strlen的模拟(递归实现)
作业内容
递归和非递归分别实现strlen
参考代码为:
//递归和非递归分别实现strlen //递归 #include <stdio.h> #include <string.h> int my_strlen(char* str) { if (*str != 0) return 1 + my_strlen(str + 1); else return 0; } int main() { char arr[] = "abcdef"; int len = my_strlen(arr);//char* printf("%d\n", len); return 0; } //非递归 #include <stdio.h> #include <string.h> int my_strlen(char* str) { int count = 0; //临时变量 while (*str != '\0') { count++; str++; } return count; } int main() { char arr[] = "abcdef"; int len = my_strlen(arr);//char* printf("%d\n", len); return 0; }
代码的运行结果为:
5.
作业标题(681)
计算斐波那契数
作业内容
递归和非递归分别实现求第n个斐波那契数
例如:
输入:5 输出:5
输入:10, 输出:55
输入:2, 输出:1
参考代码为:
递归方法:
//递归和非递归分别实现求第n个斐波那契数 //求第n个斐波那契数(递归) #include <stdio.h> int fib(int i) { if (i <= 2) return 1; if (i > 2) return fib(i - 1) + fib(i - 2); } int main() { int i = 0; scanf_s("%d", &i); printf("%d\n", fib(i)); return 0; }
非递归方法为:
//求第n个斐波那契数(非递归) #include <stdio.h> int fib(int n) { int a = 1; int b = 1; int c = 1; while (n > 2) { c = a + b; a = b; b = c; n--; } return c; } int main() { int i = 0; scanf_s("%d", &i); printf("%d\n", fib(i)); return 0; }
代码的运行结果为: