#include<stdio.h>voidPrint(int n){if(n <10){printf("%d ", n);}else{Print(n /10);printf("%d ", n %10);}}intmain(){int n =0;printf("input number:>");scanf_s("%d",&n);Print(n);return0;}
求阶乘
递归实现
#include<stdio.h>intFac(int n){if(n ==1)return1;elsereturn n *Fac(n -1);}intmain(){int n;printf("input number:>");scanf_s("%d",&n);int ret =Fac(n);printf("%d", ret);return0;}
非递归实现
#include<stdio.h>intFac(int n){int ret =1;int i =0;for(i = n; i >0; i--){
ret = ret * i;}return ret;}intmain(){int n;printf("input number:>");scanf_s("%d",&n);int ret =Fac(n);printf("%d", ret);return0;}
strlen模拟
(递归实现)
#include<stdio.h>#include<stdlib.h>#include<assert.h>intmy_strlen(constchar* p){assert(p);if(*p =='\0')return0;elsereturn1+my_strlen(p +1);}intmain(){char arr[]="abcd";int ret =my_strlen(arr);printf("%d", ret);return0;}
#include<stdio.h>#include<stdlib.h>#include<string.h>#include<assert.h>voidreverse_string(char* string){assert(string);int left =0;int right =strlen(string)-1;while(left < right){char tmp = string[left];
string[left]= string[right];
string[right]= tmp;
left++;
right--;}}intmain(){char arr[]="abcdef";reverse_string(arr);printf("%s", arr);return0;}
计算每位数之和
(递归实现)
#include<stdio.h>intDigitSum(int n){if(n <10)return n;elsereturnDigitSum(n /10)+ n %10;}intmain(){int n =0;printf("input number:>");scanf_s("%d",&n);int ret =DigitSum(n);printf("%d", ret);return0;}
递归计算n的k次方
#include<stdio.h>#include<stdlib.h>intPowerFunc(int n,int k){if(k ==0)return1;elseif(k ==1)return n;elsereturn n *PowerFunc(n, k -1);}intmain(){int n =0;int k =0;printf("input number n and number k:>");scanf_s("%d%d",&n,&k);int ret =PowerFunc(n, k);printf("%d的%d次方=%d\n", n, k, ret);return0;}
计算第n个斐波那契数(递归)
#include<stdio.h>intfib(int n){if(n ==0)return0;elseif(n ==1)return1;elsereturnfib(n -1)+fib(n -2);}intmain(){int n =0;printf("input number:>");scanf_s("%d",&n);int ret =fib(n);printf("%d\n", ret);return0;}