日期:2014-05-19  浏览次数:21106 次

一个有趣的话题,帮忙解决!!!
尝试写一个函数:  
        入口:a,b   两个整数

        返回:a,b   中小的数

        限制:不允许使用分支语句  


也有可能两个数是相等的,,相等的话就返回任意一个

------解决方案--------------------
int ReturnMin(int a,int b)
{
a> =b?b:a;
}
------解决方案--------------------
限制:不允许使用分支语句
凸啥意思?
------解决方案--------------------
return a> =b ? a : b;
------解决方案--------------------
int ReturnMin(int a,int b)
{
return a> =b?b:a;
}

------解决方案--------------------
return a> =b ? a : b;
。。。。
------解决方案--------------------
//纯数学方法搞定


/// <summary>
/// 过滤掉全部的正数
/// </summary>
/// <param name= "X "> 浮点数 </param>
/// <returns> 当X小于0时返回X,否则返回0 </returns>
public double PositiveNumber(double X)
{
return (X - Math.Abs(X)) / 2;
}

/// <summary>
/// 取得最小值
/// </summary>
/// <param name= "A "> 浮点数A </param>
/// <param name= "B "> 浮点数B </param>
/// <returns> 当A小于B返回A,否则返回B </returns>
public double Min(double A, double B)
{
return (PositiveNumber(A - B) + PositiveNumber(B - A) + A + B) / 2;
}

private void button1_Click(object sender, EventArgs e)
{
Console.WriteLine(Min(1, 2)); //1
Console.WriteLine(Min(10, 2)); //2
Console.WriteLine(Min(Min(3, 2), 1)); //1
}

------解决方案--------------------
Math.min()
------解决方案--------------------
还是错了,应该是 return (!(a^b))&a; 草纸太乱了还是不好。
------解决方案--------------------
很有意思阿
------解决方案--------------------
小弟不才。刚学编程,不知下面的笨方法是否可以?请大哥大姐门多多指教。
using System;
using System.Collections.Generic;
using System.Text;
using GB_MemoryTool;

namespace GB_Memory
{
class Program
{
static void Main(string[] args)
{
int k = 0;
kknkl(2147483640, 2147483641,ref k);
Console.WriteLine(k);
Console.ReadLine();
}

static public void kknkl(int i, int j,ref int k)
{
int num1 = i;
int num2 = j;
for (int n = 0; n <= Int32.MaxValue; n++)
{
try
{
checked
{
i++;
}
}
catch
{
k = num2;
break;
}
try
{
checked
{
j++;
}
}
catch
{
k = num1;
break;
}
}