C语言递归练习(附答案)

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
if(i<2) {
if(i == 0) return 0; else return 1; } return fbi(i-1) +fbi(i-2); } 9. 求两个数的最大公约数。
fgongyue(int m,int n)//m 要大于 n,前面可以交换让它实现 {
if(n == 0) return m; fgongyue(n,m%n); }
if(times==7) return begin; return duck((begin+1)*2,times+1); }
8. 著名的菲波拉契(Fibonacci)数列,其第一项为 0,第二项为 1,从第三项开始,其每一项 都是前两项的和。编程求出该数列前 N 项数据。 int fbi(int i) {
12. 角谷定理。输入一个自然数,若为偶数,则把它除以 2,若为奇数,则把它乘以 3 加 1。 经过如此有限次运算后,总可以得到自然数值 1。求经过多少次可得到自然数 1。 如:输入 22, 输出 22 11 34 17 52 26 13 40 20 10 5 16 8 4 2 1
STEP=16
#include "stdafx.h" #include "stdio.h"
int num; printf("please input the num:"); scanf("%d",&num); fc(num); printf("\n"); return 0; }
10. 求两个数的最小公倍数。 最小公倍数等于2个数之积乘最好公约数
m*n/fgongyue(m,n)
11. 输入一个数,求这个数的各位数字之和。 add_every_num(int num) { if(num<10) return num; return num%10+add_every_num(num/10); }
13. 将十进制转换为二进制。
#include "stdafx.h" #include "stdio.h"
int fc(int num) {
if(num == 1) {
printf("%d",num); return 0; } fc(num/2); printf("%d",num%2); }
int main(int argc, char* argv[]) {
} }
int main(int ar源自文库c, char* argv[]) {
int n,step; printf("Please input the num:"); scanf("%d",&n); step = fc(n); printf("\nStep = %d\n",step); return 0; }
int i = 1;
int fc(int n) {
if(n == 1) {
printf("%d",n); return i; } else if(n%2 == 0) { printf("%d\t",n); fc(n/2); i++; } else { printf("%d\t",n);
fc(n*3+1); i++;
dic 递归基础练习题: 1. 求 1+2+3+……+n 的值 //a+(a+1)+…+b int sum(int a,int b) {
if(b==a) return a; return a+sum(a+1,b); } 2. 求 1*2*3*……*n 的值 a*(a+1)*(a+2)…*b cheng(int begin,int end) { if(begin==end) return begin; return begin * cheng(begin+1,end); } 5. 小猴子第一天摘下若干桃子,当即吃掉一半,又多吃一个.第二天早上又将剩下的桃子吃一 半,又多吃一个.以后每天早上吃前一天剩下的一半另一个.到第 10 天早上猴子想再吃时发现, 只剩下一个桃子了.问第一天猴子共摘多少个桃子? fruit(int begin,int times) {
if(times==10) return begin; return fruit((begin+1)*2,times+1); } 7. 一个人赶着鸭子去每个村庄卖,每经过一个村子卖去所赶鸭子的一半又一只。这样他经 过了七个村子后还剩两只鸭子,问他出发时共赶多少只鸭子?经过每个村子卖出多少只鸭 子? duck(int begin,int times) {
相关文档
最新文档