c语言 递归拆分数字_C程序使用递归在数字数组中找到最大的数字
2020-08-04 14:51
926 查看
c语言 递归拆分数字
Problem statement: Write a C Program to find the Biggest Number in an Array of integers (can be negative too) using Recursion.
问题陈述:编写一个C程序,以使用Recursion在整数数组中查找最大数(也可以为负数) 。
Algorithm:
算法:
1. Construct a max function which will return maximum of two. Function max(a, b) return a>b? a: b; //using ternary operator End Function 2. Construct recursive functionfindBigRec (array, end index) Function findBigRec (array, end index) a. Base case: IF end index==0 return INT_MIN; b. Return maximum between the last element (array [end index-1]) & maximum of rest of the array. Maximum of rest of the array is calculated recursively. return max (array[end index-1], findBigRec (array, end index-1));[/code] .minHeight{ min-height: 250px; } @media (min-width: 1025px){ .minHeight{ min-height: 90px; } } .minHeight{ min-height: 250px; } @media (min-width: 1025px){ .minHeight{ min-height: 90px; } }
Explanation with example:
举例说明:
Let the length of input array: 6 Array elements: 4 12 5 13 7 9 In the main function: Call findBigRec (array,6); --------------------------------------------------- findBigRec (array,6): end index, 6 != 0 return max( array[5], findBigRec (array,5)); Call findBigRec (array,5); --------------------------------------------------- findBigRec (array,5): end index, 5 != 0 return max( array[4], findBigRec (array,4)); Call findBigRec (array,4); --------------------------------------------------- findBigRec (array,4): end index, 4 != 0 return max( array[3], findBigRec (array,3)); Call findBigRec (array,3); --------------------------------------------------- findBigRec (array,3): end index, 3 != 0 return max( array[2], findBigRec (array,2)); Call findBigRec (array,2); --------------------------------------------------- findBigRec (array,2): end index, 2 != 0 return max( array[1], findBigRec (array,1)); Call findBigRec (array,1); --------------------------------------------------- findBigRec (array,1): end index, 1 != 0 return max( array[0], findBigRec (array,0)); Call findBigRec (array,0); --------------------------------------------------- findBigRec (array,0): end index, 0 == 0 return INT_MIN; --------------------------------------------------- findBigRec (array,1) returns max ( array[0], findBigRec (array,0)) =max (4, INT_MIN) =4 --------------------------------------------------- findBigRec (array,2) returns max ( array[1], findBigRec (array,1)) =max (12, 4) =12 --------------------------------------------------- findBigRec (array,3) returns max ( array[2], findBigRec (array,2)) =max (5, 12) =12 --------------------------------------------------- findBigRec (array,4) returns max ( array[3], findBigRec (array,3)) =max (13, 12) =13 --------------------------------------------------- findBigRec (array,5) returns max ( array[4], findBigRec (array,4)) =max (7, 13) =13 --------------------------------------------------- findBigRec (array,6) returns max ( array[5], findBigRec (array,5)) =max (9, 13) =13 Thus max returned by main function is 13 Biggest no in the array is 13[/code] .minHeight{ min-height: 250px; } @media (min-width: 1025px){ .minHeight{ min-height: 90px; } } .minHeight{ min-height: 250px; } @media (min-width: 1025px){ .minHeight{ min-height: 90px; } }
C实现使用递归在数字数组中找到最大的数字 (C implementation to find the Biggest Number in an Array of Numbers using Recursion)
#include <stdio.h> #include <stdlib.h> #include <limits.h> //finding maximum of two element int max(int a,int b){ return (a>b)?a:b; } int findBigRec(int* a,int n){ //base case if(n==0) //can't return 0, since there may be //negative numbers in the array return INT_MIN; //recursively process //return maximum between the last element //& maximum of rest of array //maximum of rest of array is again going //to be recursively processed return max(a[n-1],findBigRec(a,n-1)); } int main() { int n; printf("Enter array length: "); scanf("%d",&n); int* a=(int*)(malloc(sizeof(int)*n)); printf("enter elements...\n"); //input array elements for(int i=0;i<n;i++) scanf("%d",&a[i]); //recursive function to find the maximum of the array int big=findBigRec(a,n); printf("The biggest element in the array is: %d\n",big); return 0; }[/code]
Output
输出量
Enter array length: 6 enter elements... 4 12 5 13 7 9 The biggest element in the array is: 13[/code]
c语言 递归拆分数字
相关文章推荐
- 编写一个使用数组类模板Array对数组进行排序、求最大值和求元素和的程序,并采用相关数据进行测试。
- 用C语言写一个程序,得出当前系统的整形数字长(16位,32位,64位)等,不能使用sizeof()
- C语言-使用数组求数字的位数已经其和
- 使用递归将一个整数各个数字保存到一个数组中
- Max2:使用递归求解数组中最大的两个元素
- 在数组中找到至少包含一个数字的子阵具有最大的乘积
- C语言进阶-第6讲:递归法问题求解(递归求数组的最大值)
- c ++递归算法数的计数_C ++程序使用数组中的递归查找数字的最后一次出现
- 一个用递归实现的拆分数字程序
- 【每日面试题】使用递归方法判断数字是否是升序数组
- 使用递归方法实现数字反转 C语言实现
- 编写一个使用数组类模板Array对数组进行排序、求最大值和求元素和的程序,并采用相关数据进行测试。
- C语言计算一维数组重复数字(最大)的个数及数字所有位置
- java 编写程序实现从控制台接收一个 5 位以上的整数,使用数组来判断该数字 * 是否是回文数。(例如:789987,12344321是回文数)
- 合法IP&窗口最大值数组&打印素数&递归逆序一个栈&栈排序另一个栈&MyString&寻找数组中出现的重复字符&数组中的重复数字&逆序打印链表&空格替换成%20
- 使用c语言编写程序,从键盘上任意输入两个数字,并计算出两个数的最小公倍数
- C语言 递归拆分数字
- 使用递归调用求数组的最大值,了解递归的栈调用以及递归函数的具体执行过程
- c语言找到数组中最大的成员和下标
- .NET复习第二天 练习数字交换,字符串转换 求数组最大值 快捷键的使用