国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 學(xué)院 > 開發(fā)設(shè)計(jì) > 正文

藍(lán)橋杯——遞歸一:概念及簡(jiǎn)單遞歸問題(2017.2.19)

2019-11-08 02:15:34
字體:
供稿:網(wǎng)友

1. 求n!(這里附加一個(gè)限制條件:0<=n<=12)

源代碼:

#include <stdio.h>int fun(int n){	if(n==0 || n==1)		return 1;	else		return n*fun(n-1);}int main(){	int n;	while(scanf("%d",&n)!=EOF)		PRintf("%d!=%d/n",n,fun(n));	return 0;}程序截圖:

2. 遞歸解決年齡問題:

        有5個(gè)學(xué)生坐在一起,問第5個(gè)學(xué)生的年齡,他說比第4個(gè)學(xué)生大2歲,問第4個(gè)學(xué)生的年齡,他說比第3個(gè)學(xué)生大2歲,問第3個(gè)學(xué)生的年齡,他說比第2個(gè)學(xué)生大2歲,問第2個(gè)學(xué)生的年齡,他說比第1個(gè)學(xué)生大2歲,問第1個(gè)學(xué)生的年齡,他說他10歲。

        問第2.3.4.5個(gè)學(xué)生年齡多大?

源代碼:

#include <stdio.h>int age(int n){	if(n==1)		return 10;	else		return age(n-1)+2;}int main(){	int n;	while(scanf("%d",&n)!=EOF)		printf("第%d個(gè)人: %d歲/n",n,age(n));	return 0;}程序截圖:

3. 計(jì)算組合數(shù)C(m, n)

法一:使用組合數(shù)計(jì)算公式

源代碼:

#include <stdio.h>int fun(int n)                      //需要注意直接使用公式時(shí)在int精度范圍內(nèi)可表示的數(shù)的范圍十分有限,故局限性比較大{	if(n==0|| n==1)		return 1;	else		return n*fun(n-1);}int Cmn(int m,int n){	int result;	if(m<0 || n<0 || m<n)		result=0;	else		result=fun(m)/(fun(n)*fun(m-n));	return result;}int main(){	int m,n;	while(scanf("%d %d",&m,&n)!=EOF)		printf("C(%d,%d)=%d/n",m,n,Cmn(m,n));	return 0;}法二:使用組合數(shù)遞推公式

源代碼:

#include <stdio.h>int Cmn(int m,int n){	if(m<0 || n<0 || m<n)		return 0;	if(m==n)		return 1;	if(n==1)		return m;	return Cmn(m-1,n)+Cmn(m-1,n-1);}int main(){	int m,n;	while(scanf("%d %d",&m,&n)!=EOF)		printf("C(%d,%d)=%d/n",m,n,Cmn(m,n));	return 0;}程序截圖:

4. 用遞歸方法求解兩個(gè)正整數(shù)的最大公約數(shù)

源代碼:

#include <stdio.h>int gcd(int a,int b)                   //結(jié)合輾轉(zhuǎn)相除法思想分析遞歸過程 {	if(b==0)                           //跳出while(b!=0)循環(huán)后,a的值即為所求的最大公約數(shù) 		return a;	else                               //未跳出循環(huán)時(shí),把b的值作為下一次遞歸時(shí)a的值,a%b的值作為下一次遞歸時(shí)b的值 		return gcd(b,a%b);	}int main(){      int m,n;	while(scanf("%d %d",&m,&n)!=EOF)		printf("%d/n",gcd(m,n));    return 0;  }程序截圖:

5. 逆序輸出一個(gè)正整數(shù)n的各位數(shù)字

源代碼:

#include <stdio.h>void fun(int n){	if(n)	{		printf("%d",n%10);		fun(n/10);	}}int main(){      int n;	while(scanf("%d",&n)!=EOF)	{		fun(n);		printf("/n");	}	return 0;  }程序截圖:

6. 將一個(gè)10進(jìn)制正整數(shù)轉(zhuǎn)換為m進(jìn)制數(shù)(2<=m<10)

源代碼:

#include <stdio.h>void fun(int n,int m){	if(n>0)	{		fun(n/m,m);		printf("%d",n%m);	}}int main(){  	int n,m;	while(scanf("%d %d",&n,&m)!=EOF)	{		fun(n,m);		printf("/n");	}	return 0;  }程序截圖:

附各題思路分析及要點(diǎn)整理:


發(fā)表評(píng)論 共有條評(píng)論
用戶名: 密碼:
驗(yàn)證碼: 匿名發(fā)表
主站蜘蛛池模板: 广河县| 哈密市| 京山县| 赤峰市| 平昌县| 榆树市| 临江市| 密山市| 宣恩县| 三河市| 灵台县| 太原市| 水富县| 芮城县| 连云港市| 临西县| 安岳县| 正定县| 宜阳县| 孝感市| 儋州市| 凭祥市| 汕头市| 兴化市| 昌黎县| 治多县| 略阳县| 丹凤县| 遵化市| 永吉县| 龙岩市| 格尔木市| 吉安市| 那坡县| 瓮安县| 盐源县| 罗源县| 泌阳县| 曲周县| 泽库县| 福贡县|