本关任务:设计函数RecurMaxCommonFactor(),实现递归求解两个正整数的最大公约数。
最大公约数可用如下三个性质实现: 性质1 如果a>b,则a和b的最大公约数与a-b和b的最大公约数相同; 性质2 如果a<b,则a和b的最大公约数与a和b-a的最大公约数形同; 性质3 如果a=b,则a和b的最大公约数与a值或b值相同。
编程要求
根据提示,在右侧编辑器补充递归函数RecurMaxCommonFactor(),在main函数中输入两个正整数,调用所写的函数计算出最大公约数并输出。
1 #include <stdio.h> 2 #include <stdlib.h> 3 int MaxCommonFactor(int a, int b); 4 5 int main() 6 { 7 /****************Begin*************/ 8 int a,b; 9 printf("Input two positive integers,a,b:\n"); 10 scanf("%d,%d",&a,&b); 11 if(a<0 ||b<0){ 12 printf("Input error!"); 13 }else{ 14 printf("MaxCommonFactor = %d",MaxCommonFactor(a,b)); 15 } 16 17 return 0; 18 /****************End***************/ 19 20 } 21 22 //º¯Êý¹¦ÄÜ£º ¼ÆËãÁ½¸öÕýÕûÊýµÄ×î´ó¹«Ô¼Êý£¬-1±íʾûÓÐ×î´ó¹«Ô¼Êý 23 //ÒªÇóʹÓõݹéʵÏÖ 24 int MaxCommonFactor(int a, int b) 25 { 26 /****************Begin*************/ 27 if(a>b) 28 return MaxCommonFactor(a-b,b); 29 else if(a<b) 30 return MaxCommonFactor(b-a,a); 31 else if(a==b) 32 return a; 33 /****************End***************/ 34 }