Calculating a math formula using void function-recursion in C

  • #1
anonymous33
1
0
No Effort - member warned that some effort must be shown
Homework Statement:
C
Relevant Equations:
Recursion
how can i write a function that calculate math formula using void function-recursion in C?
 

Answers and Replies

  • #2
anorlunda
Staff Emeritus
Insights Author
11,207
8,621
:welcome:

We can't offer you tutorial help until you try it first yourself. Show us your work.
 
  • #3
noname12345
31
4
Your question mixes up a bunch of different, vague requirements and generic terms; but this might help you.

Firstly you ask for "... void function ...". A void function doesn't have a return value, so you're making life difficult by specifying that. Not only do you need to find an alternative way to obtain the final result, it is in the very nature of "recursion" that each level of recursion needs access to the intermediate results from the deeper levels.

You want to "calculate math formula", but do not specify what formula?

You say you want to use "function recursion", but only a subset of formulae lend themselves to recursive solutions.

So, let's start by picking an example formula: factorial. factorial( n ) =: n* n-1 * n-2 * n-3...

This can be computed in C without recursion or void return as:
Code:
int factorialIterative( int n ) {
    int answer = n;
    while( n > 1 ) {
        n -= 1;
        answer *= n;
    }
    return answer;
}

Using recursion and non-void function:
Code:
int factorialRecursive( int n ) {
    if( n == 1 ) return 1;
    return n * factorialRecusive( n-1 );
}
(That's pretty much the standard form for recursion in C.)

If you really insist on making life difficult by using a void function, then you need to have a way to return the computed result to the caller. One way to to that is to pass a pointer to a variable in the calling code that the function can store the result to.

Code:
void factorialRecursiveVoid( int *answer, int n ) {
    if( n == 1 ) return;
    *answer *= n--;
   return;
}

But that is dangerous as it requires the caller to ensure that the variable answer is initialised to (exactly) 1, before calling the function, and there is no reasonable solution to avoiding that statutory requirement of the caller; nor any reasonable mechanism by which the recursive function could verify it.
 
  • Informative
  • Like
Likes anonymous33 and Klystron
  • #4
phinds
Science Advisor
Insights Author
Gold Member
2022 Award
18,205
11,217
@Buk, it's nice that you want to be helpful but seems like maybe you need to reread the rules yourself. As @anorlunda CLEARLY pointed out, we don't give help until the OP has made an attempt (and shown it here).
 
  • Like
Likes QuantumQuest, Klystron and anorlunda

Suggested for: Calculating a math formula using void function-recursion in C

  • Last Post
Replies
4
Views
708
  • Last Post
Replies
11
Views
381
Replies
19
Views
2K
  • Last Post
Replies
12
Views
775
  • Last Post
Replies
10
Views
683
  • Last Post
Replies
3
Views
510
  • Last Post
Replies
2
Views
763
Replies
2
Views
362
  • Last Post
Replies
11
Views
1K
Top