赞
踩
有5个人坐在在一起,问第5个人多少岁?他说比第4个人大两岁。问第4个人岁数,他说比第3个人大两岁。问第3个人,又说比第2个人大两岁。问第2个人,说比第1个人大2岁。最后问第1个人,他说是10岁。请问第5个人多大?
请使用递归完成以上问题的求解。
- #include <stdio.h>
- int getAge(int n){
- //如果n等于1,函数返回10。这表示第一个人(或者当n为1时)的年龄是10岁。
- if(n==1){
- return 10;
- }else{
- //(n-1)+2意思是,要想知道当前考虑的人n的年龄,就要先找到他前一个人(n-1)的年龄的基础上加2岁
- return getAge(n-1)+2;
- }
- }
- int main() {
- // 基础条件:第一个人是10岁
- // 递归条件:(n-1)+2
- int res=getAge(5);
- printf("%d",res);
- return 0;
- }
给定数组{1,3,6,12,45,67,89,93,96},使用二分查找求93的下标并输出。
- #include <stdio.h>
- int binSearch(int arr[],int len,int target){
- //左边界
- int left=0;
-
- //len-1,数组长度-1就是数组的最后一项,是右边界
- int right=len-1;
-
- //左边必须小于或者等于右边,条件才成立,不然就是超出边界
- while(left<=right){
-
- //计算中间位置 mid 来决定下一步搜索哪一半数组。简单的方法可能是直接使用 (left + right) / 2 来计算 mid,
- //但这种方法在 left 和 right 都很大时可能导致整数溢出。
- //为了避免这种情况,我们使用 left + (right - left) / 2 的公式。
- //这个公式首先计算 right 和 left 之间的差值,然后除以 2,最后再加上 left。
- //这样,即使 left 和 right 很大,它们的差值也不会太大,从而避免了整数溢出的问题。
- int mid=left+(right-left)/2;
-
- // if判断中间值,如果等于目标值,直接返回(return mid)目标值就ok
- if(arr[mid]==target){
- return mid;
-
- // else if判断中间值是否小于目标值
- // 如果 arr[mid] 确实小于 target,说明目标值 target 必然在 mid 的右侧(即数组的后半部分)
- // 因为数组是有序的。因此,我们将搜索范围缩小到 mid 的右侧,即更新 left = mid + 1。
- }else if(arr[mid]<target){
- left=mid+1;
-
- // 如果 arr[mid] > target,则目标值 target 必然在 mid 的左侧(即数组的前半部分),
- // 因为数组是有序的。因此,我们将搜索范围缩小到 mid 的左侧,即更新 right = mid - 1。
- }else{
- right=mid-1;
- }
- }
- return -1;
- }
- int main() {
- int arr[]={1,3,6,12,45,67,89,93,96};
- int len=sizeof(arr)/sizeof(arr[0]);
- int target=12;
- int index=
-
- return 0;
- }
给定数组{3,93,67,96,45,6,89,93,12},对数组进行排序并输出。
- #include <stdio.h>
-
- int main() {
- int arr[]={1,34,56,78,54,32,12,2,7};
- int len=sizeof(arr)/sizeof(arr[0]);
- //外层循环控制排序的次数(五个数字排序就是对比四次,所以要len-1)
- for(int i=0;i<len-1;i++){
- //内层循环控制循环趟数(每次循环一次就排除一个数字和下标,所以是len-i-1)
- for(int j=0;j<len-i-1;j++){
- if(arr[j]>arr[j+1]){
- int temp=arr[j];
- arr[j]=arr[j+1];
- arr[j+1]=temp;
- }
- }
- };
- for(int i=0;i<len-1;i++){
- printf("%d\n",arr[i]);
- }
-
- return 0;
- }
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。