Writing a recursive function in C#
c#, recursion
Solution
You don't need to use any recursion method for such a simple requirement, just try this simple method and it works like a charm:
public bool AreParenthesesBalanced(string input) {
int k = 0;
for (int i = 0; i < input.Length; i++) {
if (input[i] == '(') k++;
else if (input[i] == ')'){
if(k > 0) k--;
else return false;
}
}
return k == 0;
}
Problem
I need to write a function which verifies parentheses are balanced in a string. Each open parentheses should have a corresponding close parentheses and they should correspond correctly. For example, the function should return true for the following strings: (if (any? x) sum (/1 x)) I said (it's not (yet) complete). (she didn't listen) The function should return false for the following strings: :-) ())( OPTIONAL BONUS Implement the solution as a recursive function with no mutation / side-effects. Can you please help me out in writing using C# because I'm new to .NET technologies. Thanks. Here's what I've tried so far. It works for sending parameters as open and close brackets, but I'm confused with just passing a string... and also I should not use stack. ``` private static bool Balanced(string input, string openParenthesis, string closedParenthesis) { try { if (input.Length > 0) { //Obtain first character string firstString = input.Substring(0, 1); //Check if it is open parenthesis //If it is open parenthesis push it to stack //If it is closed parenthesis pop it if (firstString == openParenthesis) stack.Push(firstString); else if (firstString == closedParenthesis) stack.Pop(); //In next iteration, chop off first string so that it can iterate recursively through rest of the string input = input.Substring(1, input.Length - 1); Balanced(input, openParenthesis, closedParenthesis); //this call makes the function recursive } if (stack.Count == 0 && !exception) isBalanced = true; } catch (Exception ex) { exception = true; } return isBalanced; } ```