算法面试题
有一列数的规则如下: 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 }