C# 采用递归算法计算从键盘输入的两个数的最大公约数和最小公倍数

C# 采用递归算法计算从键盘输入的两个数的最大公约数和最小公倍数

递归算法就是指一个方法直接或间接地自己调用自己的过程,那么为完成这个计算任务,我们需要定义一个用于求取最大公约数和最小公倍数的方法,并定义一个完成输入、输出以及调用方法的主函数。

代码如下:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace norm_program
{
    class Program
    {
        static void Main(string[] args)
        {
            double i,j;
            Console.Write("请输入第一个正整数:");
            i=double.Parse(Console.ReadLine());
            is_right(i);
            Console.Write("请输入第二个正整数:");
            j = double.Parse(Console.ReadLine());
            is_right(j);
            int k = Math.Max((int)i, (int)j);
            Console.WriteLine("{0}和{1}的最大公约数为{2}\n", i, j, divisor((int)i, (int)j, k ));            
            Console.Write("{0}和{1}的最小公倍数为{2}\n", i, j, multiple((int)i, (int)j, k));
            Console.ReadLine();
        }

        static void is_right(double x)//用以判断输入数据是否为正整数;
        {
            if (x <= 0 || x - (int)x != 0)
            {
                Console.Write("输入数据有误,请重新开始!");
                Console.ReadLine();
            }
        }

        static int divisor(int i, int j,int k)//定义一个求取最大公约数(divisor)的方法;
        {

            if (i % k == 0 && j % k== 0)
                return k;
            else
                return divisor(i, j, --k);//输入“k--”程序会陷入死循环;            
        }

        static int multiple(int i, int j,int k)//定义一个求取最小公倍数(multipie)的方法;
        {
            int x=1;
            if (k % i == 0 && k % j == 0)
                return k;
            else
                return multiple(i, j, k*(++x));
        }
           
        }
}

在编程过程中,进行递归调用时除了要保证每个出口都有返回值之外(否则会提示“并非所有的代码路径都有返回值!”此类错误),在另一方面,若在调用过程中使用到自增或自减时,一般不采用“i++”或“i–”等此类先用后加(减)语句,否则会提示错误。

程序运行结果如下:
运行结果
在这里插入图片描述

程序运行结果1

  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值