//【题目名称】 // //strlen的模拟(递归实现) // //【题目内容】 // //递归和非递归分别实现strlen 非递归 int main() { int z = 0; int i = 0; char add[11] = "0"; scanf("%s", add); for (;add[i] != '\0';) { i = i + 1; z++; } printf("%d", z); return 0; } 递归: int ereyday(char* n) { if (*n != '\0') { return 1 + ereyday(n + 1); } else return 0; } int main() { int str = 0; char add[20] = "0"; scanf("%s", add); int q = ereyday(add); printf("%d", q); return 0; }
//【题目名称】 // //字符串逆序(递归实现) // //【题目内容】 // //编写一个函数 reverse_string(char* string)(递归实现) // //实现:将参数字符串中的字符反向排列,不是逆序打印。 // //要求:不能使用C函数库中的字符串操作函数。 // //比如 : // // //逆序之后数组的内容变成:fedcba // //编程题 //我的解答 // void reverse_string(char *arr) { char* left = arr;//a char* right = arr + sizeof(arr) - 2;//g while (left <= right) { char num = *left; *left = *right; *right = num; right--; left++; } printf("%s", arr); } int main() { char arr[] = "abcdefg"; printf("改变前"); printf("%s\n", arr); reverse_string(arr); return 0; }
//【题目名称】 // //计算一个数的每位之和(递归实现) // //【题目内容】 // //写一个递归函数DigitSum(n),输入一个非负整数,返回组成它的数字之和 // //例如,调用DigitSum(1729),则应该返回1 + 7 + 2 + 9,它的和是19 // //输入:1729,输出:19 //编程题 //我的解答 /* 思路: n n < 10 DigiSum(n) = DibiSum(n/10)+n%10 // 前n-1位之和+第N位 */ //1729 //172 9 //17 2 9 //1 7 2 9 int DigitSum(unsigned int n) { if (n > 10) return DigitSum(n / 10) + n % 10;//1729 172 9 17 2 9 else return n; } int main() { unsigned int z = 0; scanf("%d", &z); int len = DigitSum(z); printf("%d", len); return 0; }
//【题目名称】 // //递归实现n的k次方 // //【题目内容】 // //编写一个函数实现n的k次方,使用递归实现。 //n*n*n*n*n*n*n double ereyday(int n, int k) { if (k == 0) { return 1; } else { return n * ereyday(n, k - 1); } } int main() { int a = 0; int k = 0; scanf("%d %d", &a, &k); double z = ereyday(a, k); printf("%lf\n", z); return 0; }
//【题目名称】 // //计算斐波那契数 // //【题目内容】 // //递归和非递归分别实现求第n个斐波那契数 // //例如: // //输入:5 输出:5 // //输入:10, 输出:55 // //输入:2, 输出:1 // 递归://(公式法) int Fib(int n) { if (n <= 2) return 1; else return Fib(n - 1) + Fib(n - 2); } int main() { int n = 0; scanf("%d", &n); int zgq = Fib(n); printf("%d", zgq); return 0; }
678

被折叠的 条评论
为什么被折叠?



