不负韶华

来源:互联网 发布:怎样让网络信号变强 编辑:程序博客网 时间:2024/04/27 14:38
1.递归和非递归分别实现求第n个斐波那契数 
递归:
#define _CRT_SECURE_NO_WARNINGS 1#include <stdio.h>int fib(int n){if(n<3)return 1;return (fib(n-1)+fib(n-2));}int main(){int n=0;scanf("%d",&n);printf("%d\n",fib(n));return 0;}
非递归:
#define _CRT_SECURE_NO_WARNINGS 1#include <stdio.h>int fib(int n){int i = 1;int j = 1;int k = 1;while(n>2){k=i+j;i=j;j=k;n--;}return k;}int main(){int n = 0;scanf("%d",&n);printf("%d\n",fib(n));return 0;}
2.编写一个函数实现n^k,使用递归实现
#define _CRT_SECURE_NO_WARNINGS 1#include <stdio.h>power(int n,int k){if(k==0)return 1;return n*power(n,k-1);}int main(){int n = 0;int k = 0;scanf("%d %d",&n,&k);printf("%d\n",power(n,k));return 0;}
3. 写一个递归函数DigitSum(n),输入一个非负整数,返回组成它的数字之和,例如,调用DigitSum(1729),则应该返回1+7+2+9,它的和是19
#define _CRT_SECURE_NO_WARNINGS 1#include <stdio.h>int DigitSum(int n){static int sum = 0;if(n>9){DigitSum(n/10);}sum+=n%10;return sum;}int main(){int n = 0;scanf("%d",&n);printf("%d\n",DigitSum(n));return 0;}
4. 编写一个函数reverse_string(char * string)(递归实现)
实现:将参数字符串中的字符反向排列
要求:不能使用C函数库中的字符串操作函数 
#define _CRT_SECURE_NO_WARNINGS 1#include <stdio.h>void reverse_string(char *string){if(*string=='\0')printf("%c",*string);else{reverse_string(++string);printf("%c",*(--string));}}int main(){char arr[]="abcdefgh";reverse_string(arr);return 0;}

5.递归和非递归分别实现strlen

递归:

#define _CRT_SECURE_NO_WARNINGS 1#include <stdio.h>int strlen(char *p){if(*p==0)return 0;return strlen(++p)+1;}int main(){char arr[]="abcdefgh";printf("%d\n",strlen(arr));return 0;}
非递归:
#define _CRT_SECURE_NO_WARNINGS 1#include <stdio.h>int strlen(char *p){int i=0;for(i=0;*p++!=0;i++);return i;}int main(){char arr[]="abcdefgh";printf("%d\n",strlen(arr));return 0;}

6.递归和非递归分别实现求n的阶乘

递归:

#define _CRT_SECURE_NO_WARNINGS 1#include <stdio.h>int fac(int n){if(n==1)return 1;return fac(n-1)*n;}int main(){int n=0;scanf("%d",&n);printf("%d\n",fac(n));return 0;}
非递归:
#define _CRT_SECURE_NO_WARNINGS 1#include <stdio.h>int fac(int n){int i=1;int y=1;for(i=1;i<n+1;i++)y*=i;return y;}int main(){int n=0;scanf("%d",&n);printf("%d\n",fac(n));return 0;}

7.递归方式实现打印一个整数的每一位 

#define _CRT_SECURE_NO_WARNINGS 1#include <stdio.h>void print(int n){if(n>9){print(n/10);}printf("%d ",n%10);}int main(){int n=0;scanf("%d",&n);print(n);return 0;}


原创粉丝点击