利用函数实现求第n个斐波那契数/实现n^k的计算/求取一个非负整数组成它的数字之和/将参数字符串的字符反向排列/实现strlen/n的阶乘/打印整数的每一位
2019-05-16 14:46
1041 查看
1.递归和非递归分别实现求第n个斐波那契数。
采用函数递归来实现,缺点就是效率很低,每次都要从头开始调用
例如:
//50
//49 48
//48 47 47 46
#include<stdlib.h> #include<stdio.h> //1 1 2 3 5 8 13 21 34 55...... int fib(int n)//利用递归函数求取 { if (n <= 2) return 1; else return fib(n - 1) + fib(n - 2); } int main() { int n = 0; int ret = 0; printf("求第n个斐波那契数:\n"); scanf("%d", &n); ret=fib(n); printf("%d\n", ret); system("pause"); return 0; }
定义a,b,c,每次计算一位数,将a.b.c向后移动一位,避免重复计算
#include<stdlib.h> #include<stdio.h> //1 1 2 3 5 8 13 21 34 55 //a b c 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; }
2.写一个函数实现n^k的计算
#include<stdlib.h> #include<stdio.h> int Index(int n, int k) { if (k == 1) return n; else return n*Index(n, k - 1); } int main() { int n; int k; int ret; printf("请分别输入数字n和指数k\n"); scanf_s("%d,%d", &n, &k); ret= Index(n, k); printf("ret=%d\n", ret); system("pause"); return 0; }
- 写一个递归函数DigitSum(n),输入一个非负整数,返回组成它的数字之和,
例如,调用DigitSum(1729),则应该返回1 + 7 + 2 + 9,它的和是19
#include<stdlib.h> #include<stdio.h> void DigitSum(int n,int* sum) { if (n > 9) { DigitSum(n / 10, sum); } *sum += n % 10; } //1729 //(172) 9 //(17) 2 9 //1 7 2 9 int main() { int num; int sum=0; printf("请输入一个非负整数:\n"); scanf("%d", &num); DigitSum(num, &sum); printf("%d", sum); system("pause"); return 0; }
- 编写一个函数 reverse_string(char * string)(递归实现)
实现:将参数字符串中的字符反向排列。
要求:不能使用C函数库中的字符串操作函数。
#include<stdlib.h> #include<stdio.h> void reverse_string(char * string) { if (*(string) != '\0') { reverse_string(string + 1); } printf("%c", *(string-1)); } int main() { char arr[] = "abcd"; reverse_string(arr); printf("\n"); system("pause"); return 0; }
5.递归和非递归分别实现strlen
#include<stdio.h> #include<stdlib.h> int Strlen(char* arr)//递归的方式实现 { if (*(arr) != '\0') { return Strlen(++arr)+1; } return 0; } int len(char* arr)//非递归的方式 { int count = 0; while (*(arr + count) != '\0') { count++; } return count; } int main() { int ret; char arr[] = "abcd"; ret=Strlen(arr); printf("%d\n", ret); ret = len(arr); printf("%d\n", ret); system("pause"); return 0; }
6.递归和非递归分别实现求n的阶乘
#include<stdio.h> #include<stdlib.h> int Fac(int i)//用递归函数实现n的阶乘 { if (i <= 1) { return 1; } return i*Fac(i - 1); } int fac(int i)//用非递归函数实现 { int n = 1; int ret = 1; for (n = 1; n <= i; ++n) { ret = ret*n; } return ret; } int main() { int i; printf("请输入想要所求数字n的阶乘:\n"); scanf("%d", &i); Fac(i); printf("%d\n", Fac(i)); fac(i); printf("%d\n", fac(i)); system("pause"); return 0; }
7.递归方式实现打印一个整数的每一位
#include<stdio.h> #include<stdlib.h> int Print(int n) { if (n > 9) { Print(n/10); } printf("%d ", n % 10); } int main() { int i; printf("请输入一个整数:\n"); scanf_s("%d", &i); Print(i); system("pause"); return 0; }
相关文章推荐
- c语言 函数递归(斐波那契数、n^k、DigitSum(n)、字符串中的字符反向排列、strlen、求n的阶乘、打印一个整数的每一位)
- C语言 编写一个函数reverse_string(char * string) 实现:将参数字符串中的字符反向排列。
- 编写一个函数reverse_string(char * string) 实现:将参数字符串中的字符反向排列。
- C语言 编写一个函数reverse_string(char * string) 实现:将参数字符串中的字符反向排列。 要求:不能使用C函数库中的字符串操作函数。
- 编写一个函数reverse_string(char * string)(递归实现)实现:将参数字符串中的字符反向排列。要求:不能使用C函数库中的字符串操作函数。
- 编写一个函数(递归实现) 实现:将参数字符串中的字符反向排列。
- 编写一个函数 reverse_string(char * string)(递归实现) 实现:将参数字符串中的字符反向排列。 要求:不能使用C函数库中的字符串操作函数。
- 编写一个函数 reverse_string(char * string)(递归实现) 实现:将参数字符串中的字符反向排列.要求:不能使用C函数库中的字符串操作函数。
- 【C语言】编写一个函数reverse_string(char * string) 实现:将参数字符串中的字符反向排列。要求:不能使用C函数库中的字符串操作函数。
- 编写一个函数reverse_string(char * string)(递归实现) 实现:将参数字符串中的字符反向排列。
- 【c语言】编写一个函数reverse_string(char * string) 实现:将参数字符串中的字符反向排列。 要求:不能使用C函数库中的字符串操作函数
- 【c语言】编写一个函数reverse_string(char * string)(递归实现) 实现:将参数字符串中的字符反向排列。
- 编写一个函数(递归实现) 实现:将参数字符串中的字符反向排列。
- C语言 编写一个函数reverse_string(char * string)(递归实现) 实现:将参数字符串中的字符反向排列
- C语言:编写一个函数reverse_string(char * string)(递归实现) 实现:将参数字符串中的字符反向排列。
- //4. 编写一个函数reverse_string(char * string)(递归实现) //实现:将参数字符串中的字符反向排列。 //要求:不能使用C函数库中的字符串操作函数。
- 【C语言】编写一个函数reverse_string(char * string)(递归实现),将参数字符串中的字符反向排列,不能使用C函数库中的字符串操作函数。
- 编写一个函数reverse_string(char * string)(递归实现) 实现:将参数字符串中的字符反向排列。
- 编写一个函数 reverse_string(char * string)(递归实现) 实现:将参数字符串中的字符反向排列。 要求:不能使用C函数库中的字符串操作函数。
- 编写一个函数 reverse_string(char * string)(递归实现) 实现:将参数字符串中的字符反向排列。 要求:不能使用C函数库中的字符串操作函数。