遞歸有一個堆棧的概念,那就意味著他是一個反理解的過程:就象數學遞推一樣,你知道第一項,第二項,又知道通項公式,那你就可以知道任何一項。
創新互聯建站2013年至今,先為黃埔等服務建站,黃埔等地企業,進行企業商務咨詢服務。為黃埔企業網站制作PC+手機+微官網三網同步一站式服務解決您的所有建站問題。
然后你看代碼:fun(0)==0,fun(1)==1;是告訴你一二項。
fun(n)==fun(n-1)+fun(n-2);是告訴你通項公式。那么,你就可以知道任何一項。你這樣理解就差不多了,具體機器是怎么操作的,那很復雜的,也不需要明白!!!!
#include
"stdio.h"
int
gys(int
x,
int
y)
{
int
i;
for(i=xy?x:y;
i=1;
i--)
{
if(x%i==0
y%i==0)
{
return(i);
break;
}
}
return
0;//加個返回
}
int
gbs(int
x,
int
y)
{
int
i,k;
k=1;
for(i=xy?x:y;
i=x*y;
i=i*k++)
{
if(i%x==0
i%y==0)
{
return(i);
break;
}
}
return
0;//加個返回
}
void
main()
//main主函數改正
{
int
num1,num2;
scanf("%d%d",num1,num2);
printf("%d和%d的\n最大公約數為:%d\n最小公倍數為:%d\n",num1,num2,gys(num1,num2),gbs(num1,num2));
}
#includelt;stdio.hgt;//0和任意的一個數的最大公約數就是那個數(最小公倍數就是0)
int yue(int x,int y)
{
int m,t;
if(ygt;x)
{
t=x;//將x與y的值交換
x=y;
y=t;
}
while(y!=0)
{
m=x%y;
x=y;
y=m;
}
return x;
}
int bei(int x,int y,int p)
{
return(x*y/p);
}
int main()
{
int yue(int,int);
int bei(int,int,int);
int p,q,a,b;
printf("請輸入兩個整數:");
scanf("%d%d",a,b);
q=yue(a,b);
p=bei(a,b,q);//最小公倍數=兩數的乘積除以它們的最大公約數
printf("最大公約數是:%d\n最小公倍數是:%d\n",q,p);
}
擴展資料:
#includelt;iostreamgt;
using namespace std;
int i;
int max(int a,int b)
{
//coutlt;lt;"max";
int s;s=i=2;
//coutlt;lt;slt;lt;endl;
if(agt;b)
{
i=b;
}
else
i=a;
do{
if(a%i==0b%i==0)
{
//coutlt;lt;"do里面的s!"lt;lt;slt;lt;endl;
//coutlt;lt;"do里面的i!"lt;lt;ilt;lt;endl;
s=i;
break;
}
i--;
}while(ilt;ailt;b);
//coutlt;lt;"end的s!"lt;lt;slt;lt;endl;
//coutlt;lt;"end的i!"lt;lt;ilt;lt;endl;
return s;
}
int min(int a,int b)
{
//coutlt;lt;"min";
int s;s=1;i=2;
do{
if(i%a==0i%b==0)
{
//coutlt;lt;"do里面的s!"lt;lt;slt;lt;endl;
//coutlt;lt;"do里面的i!"lt;lt;ilt;lt;endl;
s=i;break;
}
i++;
}while(ilt;=a*b);
//coutlt;lt;"end的s!"lt;lt;slt;lt;endl;
//coutlt;lt;"end的i!"lt;lt;ilt;lt;endl;
return s;
}
int main()
{
int x,y,m,n;
cingt;gt;xgt;gt;y;
m=max(x,y);n=min(x,y);
coutlt;lt;mlt;lt;""lt;lt;n;
}
首先明確gbs(最小公倍數)=m*n/gys(最大公約數);
然后求最大公約數用歐幾里得輾轉相除法;代碼很短的。
#include"stdio.h"
int gys(int m,int n)
{
return n==0?m:gys(n,m%n);
}//這個函數求出了最大公約數
int main()
{
int m,n;
scanf("%d%d",m,n);
printf("最大公約數為%d 最小公倍數為%d\n",gys(m,n),m*n/gys(m,n));
return 0;
}
當前名稱:c語言gbs函數 c語言中gbs是什么意思
轉載注明:http://vcdvsql.cn/article28/ddsecjp.html
成都網站建設公司_創新互聯,為您提供虛擬主機、動態網站、、靜態網站、品牌網站設計、云服務器
聲明:本網站發布的內容(圖片、視頻和文字)以用戶投稿、用戶轉載內容為主,如果涉及侵權請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網站立場,如需處理請聯系客服。電話:028-86922220;郵箱:631063699@qq.com。內容未經允許不得轉載,或轉載時需注明來源: 創新互聯