请使用递归实现n!
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <math.h>
#include <unistd.h>
int fun(int n)
{if (n==0) {return 1;} else {return n*fun(n-1);}
}
int main(int argc, const char *argv[])
{int n;printf("please enter n:");scanf("%d",&n);int sum=fun(n);printf("%d的阶乘是: %d\n",n,sum);return 0;
}
请使用递归实现O-n的和
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <math.h>
#include <unistd.h>
int fun(int n)
{if(n==0)return 0;elsereturn n+fun(n-1);
}
int main(int argc, const char *argv[])
{int n;printf("please enter n:");scanf("%d",&n);int sum=fun(n);printf("0-%d的和是: %d\n",n,sum);return 0;
}
请使用递归实现斐波那契
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <math.h>
#include <unistd.h>
int fun(int n)
{if(n==1||n==2){return 1;}else{return fun(n-1)+fun(n-2);}
}int main(int argc, const char *argv[])
{int n;printf("please enter n:");//n为打印的数列层数scanf("%d",&n);printf("斐波那契数列:");for(int i=1;i<=n;i++){printf("%d ",fun(i));}puts("");return 0;
}
请使用递归实现二进制转换
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <math.h>
#include <unistd.h>
void Exchange(int n)
{if(n==0){return ; }else{Exchange(n/2);printf("%d",n%2);}
} int main(int argc, const char *argv[])
{int n;printf("please enter n:");scanf("%d",&n);printf("十进制数%d转换为二进制数为:",n);Exchange(n);puts("");return 0;
}
请递归实现计算各个位数字之和
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <math.h>
#include <unistd.h>
int fun(int n)
{if(n==0)return 0;elsereturn n%10+fun(n/10);
}
int main(int argc, const char *argv[])
{int n;printf("please enter n:");scanf("%d",&n);int sum=fun(n);printf("sum=%d\n",sum);return 0;
}
请递归实现计算各个位数字的乘积
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <math.h>
#include <unistd.h>
int fun(int n)
{if(n<10)return n;else{return n%10*fun(n/10);}
}
int main(int argc, const char *argv[])
{int n;printf("please enter n:");scanf("%d",&n);int sum=fun(n);printf("sum=%d\n",sum);return 0;
}
请使用递归实现计算单词逆置
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <math.h>
#include <unistd.h>
//整体逆置+单词逆置
void reverseAll(char str[], int start, int end)
{ if(end-start<1){return ; }else{ char t=str[start];str[start]=str[end];str[end]=t;reverseAll(str,start+1,end-1); }
} //逆置单词
void reverseWords(char str[],int len)
{ int start=0; int end=0; // 先逆置整个字符串 reverseAll(str,0,len-1); // 再逆置每个单词 while (end<len) { // 找到原本单词的起始位置 while (end<len && str[end]==' ') { end++; // 跳过空格 start=end; // 更新单词的起始位置 } // 找到原本单词的结束位置 while (end<len && str[end]!=' ') { end++; //移动到原本单词的末尾 } // 逆置当前单词(不包括末尾的空格) reverseAll(str,start,end-1); }
}
int main(int argc, const char *argv[])
{char str[100]; printf("Please enter str: "); gets(str); int len=strlen(str); reverseWords(str,len);printf("%s\n", str);return 0;
}