学海无涯

导航

算法面试题

有一列数的规则如下: 1、1、2、3、5、8、13、21、34...... 求第30位数是多少,用递归算法实现。

 1 int Add(int number)
 2 {
 3     if (number <= 0)
 4     {
 5         return 0;
 6     }
 7     else if (number <= 2)
 8         return 1;
 9     else
10     {
11         return Add(number - 1) + Add(number - 2);
12     }
13 }

 编程实现一个冒泡排序算法?

算法原理:

第一次循环,把最小的值放在第一位

第二次循环,把第二小的值放在第二位,依此类推,最终实现了数字从小到大排序。

 

 1 int[] numbers = { 5, 2, 9, 6, 10,1 };
 2 Console.WriteLine($"数组:{string.Join(',', numbers.Select(m => m.ToString()))}");
 3 Sort(numbers);
 4 void Sort(int[] numbers)
 5 {
 6     int temp = 0;
 7     int length = numbers.Length;
 8     for (int i = 0; i < length - 1; i++)
 9     {
10         for (int j = i + 1; j < numbers.Length; j++)
11         {
12             if (numbers[i] > numbers[j])
13             {
14                 temp = numbers[i];
15                 numbers[i] = numbers[j];
16                 numbers[j] = temp;
17             }
18         }
19         Console.WriteLine($"i={i}  {string.Join(',', numbers.Select(m=>m.ToString()))}");
20     }
21 }

 求以下表达式的值,写出您想到的一种或几种实现方法:1-2+3-4+……+m

 1 /// <summary>
 2     /// 奇偶求和,求以下表达式的值,写出您想到的一种或几种实现方法:1-2+3-4+……+m
 3     /// </summary>
 4     internal class OddEvenSummation
 5     {
 6         public static int Sum(int number)
 7         {
 8             int sum = 0;
 9             for (int i = 1; i <= number; i++)
10             {
11                 if (IsEven(i))
12                 {
13                     sum -= i;
14                 }
15                 else
16                 {
17                     sum += i;
18                 }
19             }
20             return sum;
21         }
22         /// <summary>
23         /// 是否为偶数
24         /// </summary>
25         /// <param name="number"></param>
26         /// <returns></returns>
27         private static bool IsEven(int number)
28         {
29             return number % 2 == 0;
30         }
31     }

 

posted on 2023-01-28 16:45  宁静致远.  阅读(64)  评论(0编辑  收藏  举报